使用PrintWriter时文件大小是否受到限制? 我目前正在尝试写入文件。我在二维双精度数组中拥有的数据。我正在使用的数据当前在第一个数组中有一个元素,在第二个数组中有955个元素。这是我正在使用的代码:
File outputFile = new File(getFileName());
PrintWriter output = new PrintWriter(outputFile);
for (int i=0; i<myArray.length; i++){
for (int j=0; j<this.dim2; j++){
output.println("\t value for " + sType + ": " + (j+1)+
" is: " + this.myArray [i][j]);
}//end for j
}//end for i
使用此代码,仅打印前607行(尽管之前是718行)。如果我打印到控制台,它将把数组的所有内容打印到屏幕上。 控制台输出的最后几行:
Value for Info: 951 is: 0.0
Value for Info: 952 is: 0.0
Value for Info: 953 is: 0.5625
Value for Info: 954 is: 0.16666666666666666
Value for Info: 955 is: 0.20833333333333331
最后写入文件的行:
Value for Info: 603 is: 0.5555555555555556
Value for Info: 604 is: 0.5694444444444444
Value for Info: 605 is: 0.5
Value for Info: 606 is: 0.0
Value for Info: 607 is: 0.5972222222222222
注意,我在内部循环中添加了System.out.println语句,以确保它遍历整个数组。但是由于某种原因,它不会写入文件。
对问题进行故障排除后,我发现如果我在内部循环中将某个单词字符串的额外行写入文件,则会向该文件写入一些额外的行。这对我来说没有道理。
我认为double值可能是个问题,因此我使用BigDecimal来限制输出值的小数位数,方法如下: 文件outputFile = new File(getFileName()); PrintWriter输出=新的PrintWriter(outputFile);
BigDecimal bg;
for (int i=0; i<this.dim1; i++){
output.println("Input " + sType + ": " + (i+1));
for (int j=0; j<this.dim2; j++){
bg = new BigDecimal(this.nActivation[i][j]);
output.println("\t Value for " + sType + ": " + (j+1)+
" is: " + bg.setScale(3, RoundingMode.UP));
但是随后它仅写入文件,直到值499。 任何关于正在发生的事情的想法都将不胜感激。