Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用RandomAccessFile#write()写入文件_Java_File_Io_Overwrite_Randomaccessfile - Fatal编程技术网

Java 使用RandomAccessFile#write()写入文件

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

假设我有一个程序,它生成一个名为data.bin的二进制文件,我使用data向其中写入一组随机信息。写入(项)如下:

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");