Java 为什么结果是2 4 6 8 10? 公共类TestFileStream{ 公共静态void main(字符串[]args)引发IOException{ FileOutputStream输出=新的FileOutputStream(“temp.dat”); 对于(int i=1;i

Java 为什么结果是2 4 6 8 10? 公共类TestFileStream{ 公共静态void main(字符串[]args)引发IOException{ FileOutputStream输出=新的FileOutputStream(“temp.dat”); 对于(int i=1;i,java,Java,您在(input.read())!=-1中读取一个字节,在系统.out.print(input.read()+);中读取另一个字节 如果要打印所有内容,请保存阅读内容并打印 public class TestFileStream { public static void main(String[] args) throws IOException { FileOutputStream output=new FileOutputStream("temp.dat");

您在
(input.read())!=-1中读取一个字节,在
系统.out.print(input.read()+);
中读取另一个字节

如果要打印所有内容,请保存阅读内容并打印

public class TestFileStream {
    public static void main(String[] args) throws IOException {
        FileOutputStream output=new FileOutputStream("temp.dat");

        for(int i=1;i<=10;i++){
            output.write(i);
        }
        output.close();
        FileInputStream input=new FileInputStream("temp.dat");
        while((input.read())!=-1){
            System.out.print(input.read()+" ");
        }
        input.close();  
    }
}
公共类TestFileStream{
公共静态void main(字符串[]args)引发IOException{
FileOutputStream输出=新的FileOutputStream(“temp.dat”);

对于(int i=1;i每次迭代,您都在两个位置获取数据,如上所述,一次在
(input.read())!=-1
,另一次在
System.out.print(input.read()+);

您在循环中进行了双重读取;您对结果有何惊讶?从for read,“从此输入流中读取一个字节的数据。如果没有可用的输入,此方法将阻止。”如果您要读取文档,您将得到您的答案。您以字节读取。:)谢谢!是的,我忽略了这一点!
public class TestFileStream {
    public static void main(String[] args) throws IOException {
        FileOutputStream output=new FileOutputStream("temp.dat");

        for(int i=1;i<=10;i++){
            output.write(i);
        }
        output.close();
        FileInputStream input=new FileInputStream("temp.dat");
        int data;
        while((data = input.read())!=-1){
            System.out.print(data+" ");
        }
        input.close();
    }
}