为什么我们不';不需要我&x2B+;java中的文件内操作?

为什么我们不';不需要我&x2B+;java中的文件内操作?,java,file,core,Java,File,Core,我们为什么不在以下代码段中使用i++: import java.io.*; class PracIn { public static void main(String args[]) { try { System.out.println("Reading From File.....\n\n"); /* You MUST create First Fi

我们为什么不在以下代码段中使用
i++

import java.io.*;
    class PracIn
    {
        public static void main(String args[])
        {
            try
            {
            System.out.println("Reading From File.....\n\n");

            /* You MUST create First File myOwnFile.txt in your machine */
            /* Add some Text on that File */

            FileInputStream fin=new FileInputStream("myOwnFile.txt");   

            int i=0;

            while((i=fin.read())!=-1)
            {
                System.out.print((char)i);      /* why we don't need i++*/
            }
            }
            catch(Exception e)
            {
            }
        }
    }

逻辑背后的理论是什么

i
在这里不是循环索引,因此不需要增加它
i
被分配给从文件中读取的每个字节。

为什么您认为需要执行
i++

int i;
i=fin.read();
public int read() throws IOException {
    return read0();
}

private native int read0() throws IOException;
在这里,您可以一次读取一个字符。而且,它不像文件中的指针,每次读取字符时都需要递增。
read()
方法读取并返回字符。当遇到文件结尾时,它将返回
-1
。因为在读取字符时,每个字符都由其ASCII值返回,所以需要将其转换回
char
并打印出来


下面是
FileInputStream
类中
read()
方法的实现。它使用本机实现从文件中读取字节

public int read() throws IOException {
    return read0();
}

private native int read0() throws IOException;
进一步阅读本机
read()

read()方法基本上返回“数据的下一个字节,如果到达文件末尾,则返回-1”,并将其分配给i。while循环将i的值作为条件语句进行检查。这就是为什么我们不需要增加i的值(i的值取决于FileInputStream的read()函数的返回值)。一旦条件为真,循环将结束;这意味着i的值将是-1(到达文件末尾)

有关详细说明,请点击以下链接。在这里可以找到read()方法的详细信息。希望这能回答你的问题


这是我用来从文件中读取行并将其存储在字符串数组中的代码片段,希望这对您有用:)

公共类用户{
公共静态void main(字符串x[])引发IOException{
BufferedReader b=新的BufferedReader(新文件读取器(“”);
字符串[]用户=新字符串[30];
字符串行=”;
而((line=b.readLine())!=null){
用户[i]=行;
System.out.println(用户[1]);
i++;
}
}
}

谢谢您的回复,先生!那么下一个字节是如何提取的呢?@NikhilPatil每次调用
fin.read()
都会提取下一个字节。fin.read()会从文件中提取下一个字节。当到达末尾时,它将返回-1,因为它并没有任何东西可读取,即检查文件结尾和循环终止的条件