将数组写入文件

时间:2011-01-23 18:08:19

标签: java arrays printwriter

好的,所以我上课了(抱歉格式化,不太熟悉网站)

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 个答案:

答案 0 :(得分:2)

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

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

写入每个的toString()值   集合中的项目到指定的   逐行归档。默认VM   编码和默认行结束   将被使用。

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

答案 1 :(得分:2)

for(i = 0; ++i < length; i++) {

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

答案 2 :(得分:0)

for(i = 0; ++i < length; i++) {看起来是正确的,如果这是for(i = 0; i < length; i++) {

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

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

答案 3 :(得分: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();
            }
        }
    }

}