テキスト ファイルに 3D バイト マトリックス (符号なしバイトとして) を書き込む Java に問題があります。マトリックスは 3D で、 のように見えwMatrix3D[k][j][i]
ます。値が空白で区切られ、値が 1,000 個ごとに改行されるように、テキスト ファイルに保存します (1 行あたり 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ではうまく機能しません。