嗨,我已经看了所有其他类似的问题,但我还是没能解决上一个问题,尽管其他问题的答案让我走到了这一步。
我正在尝试向文件中写入一个数组,到目前为止我可以做到,但编写器只是在同一行上写入所有内容。由于某些原因,当在记事本中查看时,它不会接受我的新行命令(\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");