2010-11-07 4 views
1

J'ai un fichier texte qui est écrit par Java FileOutputStream.PHP et un fichier écrit par Java FileOutputStream

Lorsque je lis ce fichier en utilisant file_get_contents, tout est sur la même ligne et il n'y a pas de séparateurs entre les différentes chaînes. J'ai besoin de savoir, comment lire/analyser ce fichier pour que j'ai une sorte de séparateurs entre les chaînes

J'utilise somethig comme ça, pour enregistrer le fichier:

Stream stream = new Stream(30000, 30000); 
stream.outOffset = 0; 
stream.writeString("first string"); 
stream.writeString("second string"); 

FileOutputStream out = new FileOutputStream("file.txt"); 
out.write(stream.outBuffer, 0, stream.outOffset); 
out.flush(); 
out.close(); 
out = null; 
+0

A quoi ressemble le fichier si vous le lisez avec Notepad ou un autre éditeur ordinaire? –

+0

Veuillez montrer un exemple de ce à quoi ressemble le fichier –

+0

'explode (" \ n ", file_get_contents (...))'? –

Répondre

0

file_get_contents retourne le contenu du fichier sous forme de chaîne. Il n'y a pas de ligne dans une chaîne.

Êtes-vous familier avec les nouvelles lignes? Voir wikipedia

Alors, ce que vous cherchez probablement est soit la lecture de votre ligne de fichier pour la ligne en PHP, ou la lecture avec file_get_contents comme vous l'avez fait, puis explode -ment dans les lignes (utilisez « \ n » comme séparateur).

+0

file_get_contents lit le contenu du fichier sous forme de chaîne, mais cela signifie qu'il lit également les caractères de nouvelle ligne. Si vous imprimez le résultat de file_get_contents d'une chaîne incluant de nouveaux caractères de ligne, ces caractères apparaîtront dans la sortie imprimée. –

+0

Oui. Cependant, il n'a rien dit sur la sortie. Il pourrait même être publié en HTML, où les nouvelles lignes sont élaguées en blanc afin qu'elles ne soient pas affichées par le navigateur. Pas assez de détails de la part du questionneur. – Kissaki

1

Je n'ai aucune idée de ce que cette chose Stream représente dans votre code, mais l'approche habituelle pour écrire String lignes dans un fichier utilise un PrintWriter.

PrintWriter writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream("/file.txt"), "UTF-8")); 
writer.println("first line"); 
writer.println("second line"); 
writer.close(); 

De cette façon, chaque ligne est séparée par la nouvelle ligne par défaut de la plate-forme, qui est la même chose que vous obtenez par System.getProperty("line.separator"). Sur les machines Windows, c'est généralement \r\n. Du côté de PHP, vous pouvez alors juste explode() sur cela.

0

Il n'y a aucune indication dans votre code que vous écrivez un séparateur de ligne dans le flux de sortie. Vous devez faire quelque chose comme ceci:

String nl = System.getProperty("line.separator"); 

Stream stream = new Stream(30000, 30000); 
stream.outOffset = 0; 
stream.writeString("first string"); 
stream.writeString(nl); 
stream.writeString("second string"); 
stream.writeString(nl); 

FileOutputStream out = null; 

try 
{ 
    out = new FileOutputStream("file.txt"); 
    out.write(stream.outBuffer, 0, stream.outOffset); 
    out.flush(); 
} 
finally 
{ 
    try 
    { 
     if (out != null) 
      out.close(); 
    } 
    catch (IOException ioex) { ; } 
} 

En utilisant PHP, vous pouvez utiliser la fonction exploser pour remplir un tableau complet de chaînes du fichier que vous lisez dans:

<?php 

    $data = file_get_contents('file.txt'); 
    $lines = explode('\n', $data); 

    foreach ($lines as $line) 
    { 
     echo $line; 
    } 

?> 

Notez que selon votre plate-forme, vous devrez peut-être mettre '\ r \ n' pour le premier paramètre explode, ou certaines de vos lignes peuvent avoir des retours chariot à la fin de ceux-ci.

Questions connexes