每一天的每一分每一秒都不晚!       2021年3月16日 23:18:07       

桐君过客

大三

Java学习_IO

  • 相对路径
    • 依赖于当前项目所在位置
  • 文件和目录
    • 可以判断文件或目录的是否可读,可写,可执行
    • 对目录而言,是否可执行表示能否列出它包含的文件和子目录。
    • 创建和删除(临时)文件  

  • 遍历文件和目录
    • 目录使用mkdir 和 mkdirs创建  可用delete删除
    • 使用list()listFiles()列出目录下的文件和子目录名
    •  1 package cn.zss.IO;
       2 
       3 import java.io.File;
       4 import java.io.FileInputStream;
       5 
       6 public class ListFilesTest {
       7     public static void main(String[] args) {
       8         File file = new File("E:\\23287\\Desktop\\file");
       9         printFiles(file);
      10     }
      11 
      12     static void printFiles(File file){
      13         if(file.isFile()){
      14             System.out.println("FILE: " + file.getName());
      15         }else{
      16             System.out.println("DIRC: " + file.getName());
      17             File[] files = file.listFiles();
      18             for(File file1 : files){
      19                 printFiles(file1);
      20             }
      21         }
      22     }
      23 }
  • Path
    • Java标准库还提供了一个Path对象,它位于java.nio.file包。Path对象和File对象类似,但操作更加简单
  • InputStream

    • Java 7引入的新的try(resource)的语法,只需要编写try语句,让编译器自动为我们关闭资源
    • ByteArrayInputStream在内存中模拟一个字节流输入。
    •  1 package cn.zss.IO;
       2 
       3 import java.io.*;
       4 
       5 public class FileInputStreamTest {
       6 
       7     public static void main(String[] args) throws IOException {
       8         File file = new File("E:\\23287\\Desktop\\text.txt");
       9         InputStream inputStream = new FileInputStream(file);
      10         int n;
      11         byte[] buffer = new byte[1024];
      12         while ((n = inputStream.read(buffer)) != -1){
      13             System.out.println(new String(buffer, 0, n));
      14         }
      15         inputStream.close();
      16     }
      17 }
  • OutputStream

    • 同时操作多个AutoCloseable资源时,在try(resource) { ... }语句中可以同时写出多个资源,用;隔开
  • Filter模式  
  • 操作Zip

  • Reader
    • 与InputStream对照
      InputStreamReader
      字节流,以byte为单位 字符流,以char为单位
      读取字节(-1,0~255):int read() 读取字符(-1,0~65535):int read()
      读到字节数组:int read(byte[] b) 读到字符数组:int read(char[] c)
    • 使用try (resource)结构时,当我们关闭Reader时,它会在内部自动调用InputStreamclose()方法,所以,只需要关闭最外层的Reader对象即可。
  • Writer

    • WriterOutputStream的区别如下:

      OutputStreamWriter
      字节流,以byte为单位 字符流,以char为单位
      写入字节(0~255):void write(int b) 写入字符(0~65535):void write(int c)
      写入字节数组:void write(byte[] b) 写入字符数组:void write(char[] c)
      无对应方法 写入String:void write(String s)
  • PrintStream和PrintWriter
    • PrintStreamOutputStream相比,除了添加了一组print()/println()方法,可以打印各种数据类型,比较方便外,它还有一个额外的优点,就是不会抛出IOException,这样我们在编写代码的时候,就不必捕获IOException
  • 使用Files类(java.nio.Files)

posted @ 2021-04-05 21:18  桐君过客  阅读(54)  评论(0)    收藏  举报