为什么我们不';不需要我&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,因为它并没有任何东西可读取,即检查文件结尾和循环终止的条件