Avatar billede spike. Nybegynder
27. juli 2002 - 23:20 Der er 12 kommentarer og
1 løsning

3 Text Filer Til 1 ?

jeg har 3 tekst filer

<- fil1.txt ->
lin 1
lin 2

<- fil2.txt ->
lin 3
lin 4

<- fil3.txt ->
lin 5
lin 6

hvordan får jeg lavet en ny fil så dens indhold bliver:
<- ny fil.txt ->
lin 1
lin 2
lin 3
lin 4
lin 5
lin 6
?
Avatar billede matanaka Nybegynder
27. juli 2002 - 23:23 #1
hmm hvis det bare er 3 txt filer så kan du da bare copy og past til en nye til altså ny.txt
Avatar billede matanaka Nybegynder
27. juli 2002 - 23:23 #2
men det er nok 3 tekst filer som du skal hive noget ud af ved hjælp af php
Avatar billede matanaka Nybegynder
27. juli 2002 - 23:24 #3
altså de enkelte linie
Avatar billede spike. Nybegynder
27. juli 2002 - 23:24 #4
hehe, kan ikke gøres her
Avatar billede spike. Nybegynder
27. juli 2002 - 23:25 #5
faktisk er filerne lidt over 100.000 liner og er en del af en æld gammel database, skal bruge den ned til 1 .txt fil hvor jeg så kan arbejde ud fra
Avatar billede gizmo-gizmo Nybegynder
27. juli 2002 - 23:35 #6
Du kan måske:

<?
$fil = fopen("fil1.txt", "r");
$indhold .= fread($fil, filesize($fil));
fclose($fil);

$fil = fopen("fil2.txt", "r");
$indhold .= fread($fil, filesize($fil));
fclose($fil);

$fil = fopen("fil3.txt", "r");
$indhold .= fread($fil, filesize($fil));
fclose($fil);

$ny_fil = fopen("ny_fil.txt", "a+");
fwrite($ny_fil, $indhold);
close($ny_fil);
?>
Avatar billede matanaka Nybegynder
27. juli 2002 - 23:35 #7
du skal da bare have gang i en gang sql så for at kopi fra den ene database til den anden
Avatar billede gizmo-gizmo Nybegynder
27. juli 2002 - 23:36 #8
ellers hvis du har flere filer, er dette uden tvivl lettere:

<?
$filer = array("fil1.txt", "fil2.txt", "fil3.txt", "fil4.txt");
for($i=0; $i < sizeof($filer); $i++) {
    $fil = fopen($filer[$i], "r");
    $indhold .= fread($fil, filesize($fil));
    fclose($fil);
}

$ny_fil = fopen("ny_fil.txt", "a+");
fwrite($ny_fil, $indhold);
close($ny_fil);
?>
Avatar billede gizmo-gizmo Nybegynder
27. juli 2002 - 23:43 #9
i mit sidste script skal :
$indhold .= fread($fil, filesize($fil));
selvfølgelig være:
$indhold .= fread($fil, filesize($filer[$i]));
Avatar billede tipsen Nybegynder
28. juli 2002 - 01:18 #10
Har da også lige et bud - denne udgave indlæser ikke hele filen i hukommelsen, hvilket kan være et problem med store tekstfiler - der indlæses en linie af gangen, som med det samme skrives til outputfilen!

$output = fopen("destination.txt", "w+");
$inputnames = array("fil1.txt", "fil2.txt", "fil3.txt");

for ($i=0;$i<sizeof($inputnames );$i++) {
  $input = fopen($inputnames[$i],"r");
  while (!feof ($input)) {
    fputs($output, fgets($input));
  }
  fclose($input);
}
fclose($output);
Avatar billede tipsen Nybegynder
29. juli 2002 - 00:52 #11
Hvis du arbejder med rigtigt store tekstfiler (>100mb) så håber jeg da du har valgt en udgave, som ikke smadrer serveren pga. manglende hukommelse - specielt hvis det er en opgave som skal udføres jævnligt.
Avatar billede gizmo-gizmo Nybegynder
29. juli 2002 - 11:28 #12
100 mb tekstfiler... høhø. Ja okay, så kunne det godt være man skal bruge noget andet.
Avatar billede tipsen Nybegynder
29. juli 2002 - 12:50 #13
ikke nødvendigvis... - logfiler kan tit være meget store - filerne var mere end 100.000 linier - der er alligevel plads til en del data!

Pointen var at man skal tænke over hvor store filerne er kontra hvor meget hukommelse man bruger på serveren!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester