用Java将数组写入文件



嗨,我已经看了所有其他类似的问题,但我还是没能解决上一个问题,尽管其他问题的答案让我走到了这一步。

我正在尝试向文件中写入一个数组,到目前为止我可以做到,但编写器只是在同一行上写入所有内容。由于某些原因,当在记事本中查看时,它不会接受我的新行命令(\n(。

一个尝试解释的例子:

阵列内容:测试、测试2、测试3、测试4

写入文件

文件内容:测试测试2测试3测试4

而我希望文件是:测验测试2测试3测试4

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

    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"命令,而是在最后添加的电影旁边放一个小框。

如有任何帮助,我们将不胜感激。

首先,不应该在每次写入后close()流;将close()移动到循环之外,最好移动到finally块中,以确保它被调用。其次,与其写"\n",更好的方法是

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

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

有这个writer.newLine();,并将调用移到循环之外。

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

用PrintWriter包装FileWriter或BufferedWriter,您就可以访问println(…(方法。

writer.close()移动到循环之外。此外,请确保在关闭写入程序之前刷新它。

为什么不在循环外调用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) {
        }
    }
}

我同意将writer.close((移到循环之外。但是,有一种更简单的方法可以完成您想要的操作,而不是调用换行函数,只需在语句末尾附加回车而不是回车即

更改语句:writer.write(movies[i].getName() + " n");至:writer.write(movies[i].getName() + " rn");

相关内容

  • 没有找到相关文章

最新更新