2010-11-07 49 views
1

我有一個由Java FileOutputStream編寫的文本文件。PHP和由Java FileOutputStream編寫的文件

當我使用file_get_contents讀取該文件時,所有內容都在同一行,並且不同字符串之間沒有分隔符。 我需要知道,如何讀/解析文件,所以我有某種形式的字符串之間的分隔符

我使用somethig這樣,保存文件:

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

如果使用記事本或其他普通編輯器閱讀文件,該文件如何顯示? – 2010-11-07 15:00:19

+0

請舉例說明文件看起來像 – 2010-11-07 15:02:24

+0

'explode(「\ n」,file_get_contents(...))'? – 2010-11-07 15:08:04

回答

0

file_get_contents回報內容作爲一個字符串的文件。字符串中沒有行。

你是否熟悉換行符? 見wikipedia

那麼,你可能正在尋找的是無論是讀取文件的線在PHP中, 線或file_get_contents閱讀它像你這樣,然後explode -ing入行(使用「\ n」作爲分隔器)。

+0

file_get_contents以字符串的形式讀取文件的內容,但這意味着它還會讀取新的行字符。如果您打印包含換行符的字符串的file_get_contents的結果,那麼這些字符將出現在打印輸出中。 – 2010-11-07 15:31:25

+0

是的。雖然他沒有在輸出中說明任何內容。甚至可能是他以HTML格式輸出,其中新行被修剪成白色空間,所以它們不會被瀏覽器顯示。提問者沒有足夠的細節。 – Kissaki 2010-11-07 21:04:59

1

我不知道代碼中的東西代表的是什麼,但將String行寫入文件的常用方法是使用PrintWriter

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

這樣,每條線由平臺默認換行,因爲你通過System.getProperty("line.separator")獲取這是相同的分離。在Windows機器上,這通常是\r\n。在PHP方面,你可以在那裏只需explode()

0

在代碼中沒有跡象表明您正在向輸出流寫入行分隔符。你需要做這樣的事情:

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) { ; } 
} 

使用PHP,您可以使用爆炸功能,以填補一個完整的文件字符串數組您正在閱讀:

<?php 

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

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

?> 

請注意,根據您的平臺,您可能需要爲第一個爆炸參數放置'\ r \ n',或者您的某些行可能在它們的末尾有回車符。