Java 将int写入文件并读取,hasNext()返回false

Java 将int写入文件并读取,hasNext()返回false,java,io,Java,Io,我必须将100个随机整数写入一个文件,并按递增顺序显示它们。PrintWriter编写它们,但当我尝试从文件中读取时,方法hasNext()返回false,我不明白为什么。我想问题在于PrintWriter try(PrintWriter output = new PrintWriter(file); Scanner input = new Scanner(file)) { for (int i = 0; i < 100; i++)

我必须将100个随机整数写入一个文件,并按递增顺序显示它们。PrintWriter编写它们,但当我尝试从文件中读取时,方法
hasNext()
返回false,我不明白为什么。我想问题在于PrintWriter

try(PrintWriter output = new PrintWriter(file);
                Scanner input = new Scanner(file)) {

            for (int i = 0; i < 100; i++) {
                output.print((int)(Math.random() * 101) + " ");
            }

            int[] numbers = new int[100];
            int i = 0;
            while (input.hasNextInt()) {
                numbers[i++] = input.nextInt();
            }

            Arrays.sort(numbers);
            for (int n : numbers)
                System.out.println(n);

        } catch (FileNotFoundException ex) {
            System.out.println("Cannot find the file!");
        }
try(PrintWriter输出=新的PrintWriter(文件);
扫描仪输入=新扫描仪(文件)){
对于(int i=0;i<100;i++){
output.print((int)(Math.random()*101)+”);
}
整数[]个数=新整数[100];
int i=0;
while(input.hasNextInt()){
数字[i++]=input.nextInt();
}
数组。排序(数字);
用于(整数n:数字)
系统输出println(n);
}捕获(FileNotFoundException ex){
System.out.println(“找不到文件!”);
}

您需要
刷新输出流,以便将更改写入文件

...
for (int i = 0; i < 100; i++) {
    output.print((int) (Math.random() * 101) + " ");
}

output.flush();
...
。。。
对于(int i=0;i<100;i++){
output.print((int)(Math.random()*101)+”);
}
output.flush();
...
此外,在这种情况下,
close
会自动刷新流-因此,如果在
try
块之后尝试读取文件,您将看到更改。对于a,每当打印新行时(通过
println
或通过
printf
/
print
手动),也会调用
flush


我认为同时打开读写器通常不是一个好主意。

您需要刷新输出流,以便将更改写入文件

...
for (int i = 0; i < 100; i++) {
    output.print((int) (Math.random() * 101) + " ");
}

output.flush();
...
。。。
对于(int i=0;i<100;i++){
output.print((int)(Math.random()*101)+”);
}
output.flush();
...
此外,在这种情况下,
close
会自动刷新流-因此,如果在
try
块之后尝试读取文件,您将看到更改。对于a,每当打印新行时(通过
println
或通过
printf
/
print
手动),也会调用
flush

我认为让读者和作者同时打开通常不是一个好主意