簡體   English   中英

為什么在Java的文件操作中不需要i ++?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM