[英]Why we don't need i++ in File Operation in java?
為什么在以下代碼段中不需要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
被分配了從文件中讀取的每個字節。
read()方法基本上返回“下一個數據字節,如果到達文件末尾,則返回-1”,並將其分配給i。 while循環將i的值作為條件語句進行檢查。 這就是為什么我們不需要增加i的值的原因(i的值取決於FileInputStream的read()函數的返回值)。 一旦條件為真,循環將結束。 這意味着i的值將為-1(已到達文件末尾)。
有關詳細說明,請通過以下鏈接。 在這里,您可以找到read()方法的詳細信息。 希望這能回答您的問題。
https://docs.oracle.com/javase/7/docs/api/java/io/FileInputStream.html
這是我用來從文件中讀取行並將其存儲在字符串數組中的代碼片段,希望這對您有用:)
public class user {
public static void main(String x[]) throws IOException{
BufferedReader b=new BufferedReader(new FileReader("<path to file>"));
String[] user=new String[30];
String line="";
while ((line = b.readLine()) != null) {
user[i]=line;
System.out.println(user[1]);
i++;
}
}
}
為什么您認為需要做i++
。
int i;
i=fin.read();
在這里,您一次閱讀一個字符。 另外,它與文件中的指針不同,每次讀取字符時都需要增加指針。 read()
方法讀取字符並將其返回。 當遇到文件末尾時,它將返回-1
。 因為在讀取每個字符時都是通過其ASCII值返回的,所以您需要轉換回char
並進行打印。
這是FileInputStream
類中read()
方法的實現。 它使用本機實現從文件中讀取字節。
public int read() throws IOException {
return read0();
}
private native int read0() throws IOException;
有關本機read()
進一步閱讀: 本機read()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.