私は次のことを行っています: - 空のファイルの作成 - ファイルのロック - ファイルへの書き込み - コンテンツの読み戻し
public class TempClass {
public static void main(String[] args) throws Exception{
File file = new File("c:/newfile.txt");
String content = "This is the text content123";
if (!file.exists()) {
file.createNewFile();
}
// get the content in bytes
byte[] contentInBytes = content.getBytes();
FileChannel fileChannel = new RandomAccessFile(file, "rw").getChannel();
FileLock lock = fileChannel.lock();
//write to file
fileChannel.write(ByteBuffer.wrap (contentInBytes));
//force any updates to this channel's file
fileChannel.force(false);
//reading back file contents
Double dFileSize = Math.floor(fileChannel.size());
int fileSize = dFileSize.intValue();
ByteBuffer readBuff = ByteBuffer.allocate(fileSize);
fileChannel.read(readBuff);
for (byte b : readBuff.array()) {
System.out.print((char)b);
}
lock.release();
}
}
ただし、指定した内容でファイルが正しく書き込まれていることがわかりますが、読み返すと、ファイル内の実際のすべての文字に対して四角形の文字が出力されます。その正方形の文字はchar
、バイト 0 に相当します。
System.out.print((char)((byte)0));
ここで何が問題なのですか?