2010-11-07 54 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',或者您的某些行可能在它们的末尾有回车符。