0

好的,我已经上课了(对格式感到抱歉,对网站不太熟悉)

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());  
        }  
    }  
}

问题是我想将一个数组写入一个文件,每个条目都在一个单独的行上,并且我想在每次写入开始时擦除文件。关于做什么的任何建议?因为我所做的只是在擦除所有先前条目的同时写入数组的最后一个条目,但我可以在其自身下方多次写入最后一个条目。

谢谢^^

4

4 回答 4

2

我强烈建议使用库http://commons.apache.org/io/api-release/org/apache/commons/io/FileUtils.html已经解决了许多这些问题。如果您将数组转换为列表,则可以使用:

public static void writeLines(File file,
                              Collection<?> lines)
                       throws IOException

将集合中每个项目的 toString() 值逐行写入指定的 File。将使用默认的 VM 编码和默认的行尾。

该库的作者已经想到了许多大多数人没有想到的问题,例如行尾、编码、错误捕获等。对于一般用途,它也可能尽可能高效。

于 2011-01-23T18:11:58.627 回答
2
for(i = 0; ++i < length; i++) {

我认为您不想将 i 增加两次。摆脱 ++i。

于 2011-01-23T18:12:12.657 回答
0

for(i = 0; ++i < length; i++) {看起来不错,应该这样for(i = 0; i < length; i++) {吗?

或者,甚至更好:for (String line : input) { }

此外,new FileOutputStream(fileName, true)不会清除文件,而是附加到它。

于 2011-01-23T18:14:39.927 回答
0
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();
            }
        }
    }

}
于 2011-01-23T18:18:18.823 回答