我在将 3D 字节矩阵(作为无符号字节)写入文本文件时遇到问题。矩阵是 3D 的,看起来像wMatrix3D[k][j][i]
. 我想将它保存到一个文本文件中,因此这些值由空格分隔,并且每 1,000 个值换行一个新行(每行有 1,000 个像素值,1,000 行构成一个代表图像的 1,000 x 1,000 文本文件)。
目前,我这样做:
BufferedWriter out = new BufferedWriter(new FileWriter(imgout));
//Parse Headers
for(int countHeaderLines = 0; countHeaderLines < numHeaders; countHeaderLines+=1){
out.write(headers[countHeaderLines] + "\n");
}
System.out.println("Wrote Headers");
//Parse 1,000,000 x 1,000 2D matrix into 3D (1,000 x 1,000) x 1,000 matrix
System.out.println("Writing main matrix to text...");
//String slice = new String();
for(int k = 0; k < numLayers; k++){
for(int j = 0; j < numRows; j++){
String rowStr = new String();
for(int i = 0; i < numColumns; i++){
rowStr += Integer.toString((Integer.valueOf(wMatrix3D[k][j][i]) & 0xFF)) + " ";
}
out.write(rowStr + "\n");
}
/*if( (k+1) % 5 == 0){
slice = new String();
out.write(slice);
System.out.println("Writing Set of 10:" + k);
}*/
System.out.println("k: " + k);
}
但是,这种方式非常非常慢。有没有更有效的方法来做到这一点?在 CI 中使用“fprintf”没有问题,但在 Java 中我无法让它正常工作。