美文网首页
Java IO详解

Java IO详解

作者: 小星star | 来源:发表于2019-02-05 15:26 被阅读27次

    这里举了几个IO例子

    1. 使用FileReader的read(char[] cbuf)读取字符

      private static final int MAX_LEN = 1024;  //每次读取的最大字节数
      FileInputStream in = new FileInputStream("File Path");
      int len;
      byte[] buf = new byte[MAX_LEN];
      while( (len = in.read(buf)) != -1) {    //每次读取MAX_LEN个字节,len为读取到的字节数
          System.out.println(buf);
          //System.out.println(new String(buf, 0, len));
      }
      fileReader.close();
      

      这个代码中的(len = in.read(buf)) != -1 解释:

      我们就以内容是abcde为例:你设置的buf长度是1024,因此每次从文件中读取1024个字符。
      第一次读取,fr.read(buf),因为文件中就5个字符,全被读到了buf中,此时len=5,执行循环体中的语句,输出abcde;然后程序继续执行;
      第二次读取,fr.read(buf),由于文件中的数据第一次已经读完,因此此时返回值为-1,跳出循环。
      所以最后输出abcde.

    2. 使用FileReader.read()来读取

      int i;
      while((i = fileReader.read()) != -1){
          System.out.println(char(i));
      }
      fileReader.close();
      

      这个代码 (i = fileReader.read()) != -1

      fileReader.read() 是一个字符一个字符的读,当不是文件末尾的时候,返回字符本身,当读到文件末尾的时候,返回-1

    1. Buffered Reader 读取文件 常用

      BufferedReader in = new BufferedReader(new FileReader("Path"));
      String line = in.readLine(); 
      
    2. Scanner 来读取

      //Scanner in = new Scanner(System.in);  键盘输入
      Scanner in = new Sacnner(new FileReader("Path"));
      String line = in.nextLine();
      
    3. 这里我们可以看到 基本上我们使用的 类 BufferedReader等等他们都是以FileReader建立的,他们都体现了 装饰类 的思想,它与其他类配合使用。 过滤流
      而我们 经常使用的方法 : readLine()nextInt() 就在 这些装饰类中实现了

    4. Java IO package 相关类的关系
      注意查看 我们经常使用的 过滤类


      image.png
      image.png
    5. File对象的使用
      这里举的例子是File 对象是一个目录。

      File direct=new File(".");//创建代表当前目录的文件对象
      
      String fileList[]=direct.list();//返回目录下的所有文件名和目录名
      
      for(String name:fileList)
         System.out.println("name:"+name);
      
      //列出目录中的文件名和尺寸
      for(int i=0;i<fileList.length;i++)
      {
         File currentFile=new File(fileList[i]);
         System.out.println(currentFile.getAbsolutePath()+"  "+currentFile.length()+"字节");
      }
      
    6. 这里另提一下,当我们要访问的文件用绝对路径的时候,直接写就行,“D:\...”,如果是本工程中的文件,“ . ”表示本工程所在的 位置,如下图,要访问package chapter9内的图片


      image.png
    in = new FileInputStream(".\\src\\chapter9\\lotus.jpg");
    

    相关文章

      网友评论

          本文标题:Java IO详解

          本文链接:https://www.haomeiwen.com/subject/tzkvsqtx.html