将字符串数组写入文件 - 一行?

时间:2014-04-07 12:08:44

标签: java arrays string file-io

这是一个例子,我从文件中读取行作为字符串,将整个文件作为字符串数组:

String[] ArrayOfStrings = (new Scanner( new File("log.txt") ).useDelimiter("\\A").next()).split("[\\r\\n]+");

我有任何类似的方法来写回文件:

something_that_writes_into_file(ArrayOfStrings)?

我了解PrintWriterBuffer和其他使用循环的内容。

我的问题是关于更紧凑的事情,比如说 - 一线解决方案?

3 个答案:

答案 0 :(得分:1)

使用Apache Commons IOApache StringUtils

FileUtils.writeStringToFile(new File(theFile), StringUtils.join(theArray, delimiter));

答案 1 :(得分:0)

这是如何做到的。

for(int i = 0; i < observation.length; i++)
{
    try(BufferedWriter bw = new BufferedWriter(new FileWriter("birdobservations.txt", true)))
    {
        String s;
        s = observation[i];
        bw.write(s);
        bw.flush();
    }
    catch(IOException ex)
    {
        //
    }
}

之前讨论过相同的问题,请参阅以下链接。 Writing a string array to file using Java - separate lines

答案 2 :(得分:0)

在Java 8中,可以使用Streams:

File file = new File("log.txt");
FileWriter out = new FileWriter(file);

// reading
String[] arrayOfStrings = (new Scanner(file).useDelimiter("\\A").next()).split("[\\r\\n]+");

// writing
Stream.of(arrayOfStrings).forEach(e -> {try {out.append(e);} catch (IOException e1) {e1.printStackTrace();}});

当然这是非常糟糕的风格,我只是这样写,因为你要求“1-liner”。实际上会这样做:

Stream.of(arrayOfStrings).forEach(e -> {
    try {
        out.append(e);
    } catch (IOException e1) {
        e1.printStackTrace();
    }
});