使用Java将数组写入文件

时间:2011-04-28 14:49:02

标签: java arrays file line

嗨,我已经看过所有其他类似的问题,我可以找到并且无法解决我的上一个问题,尽管其他问题的答案让我走得很远。

我正在尝试将数组写入文件,到目前为止我可以这样做,但作者只是将所有内容都写在同一行上。出于某种原因,在记事本中查看时,它不会接受我的新行命令(\ n)。

尝试解释的一个例子:

数组内容:test,test2,test3,test4

写入文件

文件内容:test test2 test3 test4

我希望文件是: 测试 TEST2 TEST3 TEST4

以下是我要写入文件的代码段。

    public void save(String fileName) throws FileNotFoundException {

    try {

        BufferedWriter writer = new BufferedWriter(new FileWriter(fileName));
        for ( int i = 0; i < nbrMovies; i++)
        {      
        writer.write(movies[i].getName() + " \n");
        }
        writer.close();
    } catch(IOException ex) {
        ex.printStackTrace();
    }
}

该文件不接受“\ n”命令,只是在最后添加的电影旁放置一个小框。

非常感谢任何和所有帮助。

8 个答案:

答案 0 :(得分:3)

writer.close();从for循环中取出。你的代码应该是这样的: -

 public void save(String fileName) throws FileNotFoundException {
    BufferedWriter writer = null;
    try {

        writer = new BufferedWriter(new FileWriter(fileName));
        for ( int i = 0; i < nbrMovies; i++)
        {      
          writer.write(movies[i].getName());
          writer.newLine();
      writer.flush();
        }

    } catch(IOException ex) {
        ex.printStackTrace();
    } finally{
        if(writer!=null){
            writer.close();
        }  
    }
}

答案 1 :(得分:3)

首先,每次写入后都不应该close()流;将close()移到循环外部,最好移到finally块中以确保它被调用。其次,不是写“\ n”,而是采用更好的方法

writer.write(movies[i].getName());
writer.newLine();
writer.flush(); //optional

答案 2 :(得分:1)

writer.newLine();并将调用移出闭环。

答案 3 :(得分:1)

import java.io.*;

public class WriteChar 
{

    public static void main(String[] args) 
    {

        try
    {
       File f=new File("WriteChar.txt");
      char c[]={'a','b','c','d','e','f','g'};


       FileWriter out=new FileWriter(f);
       out.write(c);
       System.out.println("Done ..........");
       out.close();
    }

        catch(IOException ioe)
        {
            ioe.printStackTrace();
        }
    }

}

答案 4 :(得分:0)

使用PrintWriter包装FileWriter或BufferedWriter,您将可以访问println(...)方法。

答案 5 :(得分:0)

writer.close()移到循环外部。另外,请确保在关闭之前刷新写入器。

答案 6 :(得分:0)

为什么不在循环外调用close

Writer writer = null;
try {
    writer = new BufferedWriter(new FileWriter(fileName));
    for (Movie movie : movies) {      
        writer.write(movie.getName() + " \n");
    }
} catch(IOException ex) {
    ex.printStackTrace();
} finally {
    if (writer != null) {
        try {
            writer.close();
        } catch (IOException ignored) {
        }
    }
}

答案 7 :(得分:0)

我同意在循环外移动writer.close()。但是有一种更简单的方法可以做你想要的 - 而不是调用换行函数,只需在语句末尾追加回车而不是返回 即

更改声明:writer.write(movies[i].getName() + " \n"); 致:writer.write(movies[i].getName() + " \r\n");