Java IO详解

这里举了几个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
  6. 这里另提一下,当我们要访问的文件用绝对路径的时候,直接写就行,“D:\...”,如果是本工程中的文件,“ . ”表示本工程所在的 位置,如下图,要访问package chapter9内的图片


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

你可能感兴趣的:(Java IO详解)