所以我编写了一个程序,假设将两个LinkedList的内容写入格式为
的文本文件中“标题行1”
“标题行2”
“标题行3”
x1 y1
x2 y2
x3 y3
...
x1023 y1023
这是主要的编写代码:
LinkedList<Double> xVal;
LinkedList<Double> yVal;
LinkedList<String> header;
Analize test;
Scanner scan = new Scanner(System.in);
FileWriter fstream;
BufferedWriter out;
int i=1;
test = new Analize(i);
test.addData();
test.calculate();
//Writing ModY
fstream = new FileWriter("BLOCK " +i+"_ModY.txt");
out = new BufferedWriter(fstream);
header = test.getHeader();
xVal=test.getXList();
yVal=test.getYListMod();
//Write Header
out.write(header.get(0)+"_modY");out.newLine();
out.write(header.get(1));out.newLine();
out.write(header.get(2));out.newLine();
for(int j=0;j<xVal.size();j++)
{
double x=xVal.get(j);
double y=yVal.get(j);
out.write(x+"\t"+y+" "+j);out.newLine();
//test code
System.out.println(xVal.get(j)+" "+yVal.get(j)+" "+j);
//System.out.println(j);
}
真正烦人的是测试代码行: System.out.println(xVal.get(j)+“”+ yVal.get(j)+“”+ j); 实际上在System.in中使用正确的值运行了1023次,但文件的值只有558次。
我不确定这里发生了什么......
答案 0 :(得分:14)
我没有看到你在任何地方呼叫out.close();
。这将为您刷新和关闭基础流。我会在你的for循环之后把它放好。
始终确保关闭流,否则您的某些数据可能会在内存中等待JVM出现并将其刷新到您的文件中。
答案 1 :(得分:2)
除了what Cory said之外,始终关闭finally块中的基础流,以确保它们无论异常如何都会被关闭。