PHP和Java FileOutputStream编写的文件

时间:2010-11-07 14:58:47

标签: java php

我有一个由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;

3 个答案:

答案 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',或者您的某些行可能在其末尾有回车符。