为什么我们在java中的文件操作中不需要i ++?

时间:2015-12-31 09:42:31

标签: 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 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)
            {
            }
        }
    }

逻辑背后的理论是什么?

4 个答案:

答案 0 :(得分:3)

i这里不是循环索引,所以不需要增加它。为文件中的每个字节分配i

答案 1 :(得分:1)

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

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

https://docs.oracle.com/javase/7/docs/api/java/io/FileInputStream.html

答案 2 :(得分:1)

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

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++;  
   }

 }
}

答案 3 :(得分:0)

为什么你认为你需要做<script src="http://urbanior.grapesdigital.com/skin/frontend/rwd/default/js/owl.carousel.js"></script> <script src="http://urbanior.grapesdigital.com/skin/frontend/rwd/default/js/jquery.bxslider.js"></script> <script> jQuery(document).ready(function($){ $('.bxslider').bxSlider1({ mode: 'fade' }); $(".testi").owlCarousel({ items : 5, itemsCustom : false, itemsDesktop : [2000, 1], itemsDesktopSmall : [979, 1], itemsTablet : [768, 1], itemsTabletSmall : false, itemsMobile : [479, 1], }); }); </script>

i++

在这里你一次读一个角色。此外,它不像文件中的指针,每次读取字符时都需要递增。 int i; i=fin.read(); 方法读取字符并返回它。当遇到文件末尾时,它将返回read()。因为在读取每个字符时,它们的ASCII值都会返回,因此您需要转换回-1并打印它。

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

FileInputStream

进一步了解原生public int read() throws IOException { return read0(); } private native int read0() throws IOException; native read()