我刚刚在 youtube 上观看了一个教程,展示了如何在 java 中创建固定长度的随机访问文件。我writeBytes
对类中方法的概念有些困惑RandomAccessFile
。
// Create an instance of the RandomAccessFile class
RandomAccessFile raf = new RandomAccessFile("RAF1.dat", "rw");
// Get the length of the file so new entries
// Are added at the end of the file
raf.seek(raf.length());
// Max input length of the persons name
int recordLength = 20;
// Each record will have a byte length of 22
// Because writeUTF takes up 2 bytes
int byteLength = 22;
// Just a random name to stick in the file
String name = "John";
// Write the UTF name into the file
raf.writeUTF(name);
// Loop through the required whitespace to
// Fill the contents of the record with a byte
// e.g recordLength - nameLength (20 - 4) = 16 whitespace
for (int i = 0; i < recordLength - name.length(); i++) {
raf.writeByte(10);
}
以上是我用来写入随机访问文件的代码。如您所见,我正在使用 raf.writeByte(10); 为了填充记录中的空白。
raf.writeByte(10);
在文件中存储以下内容:Ѐ潊湨ਊਊਊਊਊਊਊਊ
但是,当我更改raf.writeByte(10);
并raf.writeByte(0);
创建一个新文件时...
raf.writeByte(0);
在新文件中存储以下内容:John
您可能无法在此处正确看到它,但 John 后面有空格,并且名称实际上是可读的。
你们能解释一下为什么使用 0 字节和 10 字节会有这样的区别吗?您还可以建议我对代码进行的任何改进。
非常感谢,感谢您的帮助:)。