我有一个由Java FileOutputStream编写的文本文件。
当我使用file_get_contents
读取该文件时,所有内容都在同一行,并且不同字符串之间没有分隔符。
我需要知道,如何读取/解析该文件,所以我对字符串之间的分隔符有一些
我正在使用像这样的东西来保存文件:
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 :(得分:1)
我不知道代码中的Stream
代码是什么,但将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()
就可以了。
答案 1 :(得分:0)
file_get_contents
以字符串形式返回文件内容。字符串中没有行。
您熟悉换行符吗? 见wikipedia
所以,您可能正在寻找的是在PHP中读取文件行以获取行,
或者像你一样用file_get_contents
读取它,然后explode
将它读成行(用“\ n”作为分隔符)。
答案 2 :(得分: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,您可以使用explode函数来填充您正在读取的文件中充满字符串的数组:
<?php
$data = file_get_contents('file.txt');
$lines = explode('\n', $data);
foreach ($lines as $line)
{
echo $line;
}
?>
请注意,根据您的平台,您可能需要为第一个爆炸参数添加'\ r \ n',或者您的某些行可能在其末尾有回车符。