Java 使用RandomAccessFile#write()写入文件
假设我有一个程序,它生成一个名为data.bin的二进制文件,我使用data向其中写入一组随机信息。写入(项)如下:Java 使用RandomAccessFile#write()写入文件,java,file,io,overwrite,randomaccessfile,Java,File,Io,Overwrite,Randomaccessfile,假设我有一个程序,它生成一个名为data.bin的二进制文件,我使用data向其中写入一组随机信息。写入(项)如下: RandomAccessFile数据=新的RandomAccessFile(“data.bin”、“rws”); 随机r=新随机(482010); 扫描仪输入=新扫描仪(System.in); 整数=100; 字节[]项=新字节[1024]; System.out.print(“多少项(可能是800000)\n>”; number=input.nextInt(); 对于(int
RandomAccessFile数据=新的RandomAccessFile(“data.bin”、“rws”);
随机r=新随机(482010);
扫描仪输入=新扫描仪(System.in);
整数=100;
字节[]项=新字节[1024];
System.out.print(“多少项(可能是800000)\n>”;
number=input.nextInt();
对于(int i=0;i是的,因为你已经关闭了文件,所以当前位置会转到文件的开头,现在如果你说data.write,那么数据会被覆盖。如果你还没有关闭文件,那么当你说data.write时,它会在文件的结尾继续。你为什么不自己测试一下,或者看看你是否在中找不到答案?我不会使用“rws”,因为这比“rw”慢很多"我不知道这会对你有什么帮助。我会使用普通的FileOutputStream,因为这可以清楚地表明你是在覆盖还是在追加。因为你每次都使用相同的随机种子,所以你应该写相同的随机数据,所以如果你在覆盖相同长度的文件,看起来也会完全相同。恐怕-你是这样的错误。即使使用了data.close();
,新内容也会添加到data.bin文件的末尾。
RandomAccessFile data = new RandomAccessFile("data.bin","rws");
Random r = new Random(482010);
Scanner input = new Scanner(System.in);
int number = 100;
byte[] item = new byte[1024];
System.out.print("How many items (perhaps 800000)\n> ");
number = input.nextInt();
for (int i=0; i<number; i++) {
r.nextBytes(item);
data.write(item);
}
data.close();
System.out.println("Done");