这是一个例子,我从文件中读取行作为字符串,将整个文件作为字符串数组:
String[] ArrayOfStrings = (new Scanner( new File("log.txt") ).useDelimiter("\\A").next()).split("[\\r\\n]+");
我有任何类似的方法来写回文件:
something_that_writes_into_file(ArrayOfStrings)?
我了解PrintWriter
,Buffer
和其他使用循环的内容。
我的问题是关于更紧凑的事情,比如说 - 一线解决方案?
答案 0 :(得分:1)
使用Apache Commons IO和Apache 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();
}
});