题
好吧,我上课(对不起,格式化,对网站不太熟悉)
import java.io.*;
public class writingArray
{
public static void writeToFile(String fileName, String[] input) {
PrintWriter printWriter;
try {
printWriter = new PrintWriter(new FileOutputStream(fileName, true));
int length = input.length;
int i;
for(i = 0; ++i < length; i++) {
printWriter.println(input[i]);
}
printWriter.close();
}
catch(IOException e) {
System.out.println(e.getMessage());
}
}
}
问题是我想为文件写一个数组,每个条目都在单独的行上,我想在每次写入的开始时擦除文件。关于该怎么做的建议?因为我要做的就是在擦拭所有先前条目时写下数组的最后一个条目,但我可以在本身下几次编写最后一个条目。
谢谢^^
解决方案
for(i = 0; ++i < length; i++) {
我认为您不想增加我两次。摆脱++ i。
其他提示
我强烈建议使用图书馆 http://commons.apache.org/io/api-release/org/apache/commons/io/fileutils.html 这已经解决了许多此类问题。如果将数组转换为列表,则可以使用:
public static void writeLines(File file,
Collection<?> lines)
throws IOException
将收藏集中每个项目的toString()值写入指定的文件行。将使用默认的VM编码和默认行结尾。
图书馆的作者已经想到了许多问题,大多数人都没有,例如线路端,编码,错误捕获等。它也可能会尽可能高效。
for(i = 0; ++i < length; i++) {
看起来正确,应该是 for(i = 0; i < length; i++) {
?
或者,甚至更好: for (String line : input) { }
还, new FileOutputStream(fileName, true)
不会清除文件,而是附加文件。
import java.io.*;
public class writingArray {
public static void writeToFile(String fileName, String[] input) {
PrintWriter printWriter = null;
try {
printWriter = new PrintWriter(new FileOutputStream(fileName));
for (int i = 0; i < input.length; i++) {
printWriter.println(input[i]);
}
} catch (IOException e) {
System.out.println(e.getMessage());
} finally {
if (printWriter != null) {
printWriter.close();
}
}
}
}
不隶属于 StackOverflow