紫玉坏小子

导航

java学习三

IO流

什么是IO流?
  • I/O,即输入(input)输出(output),IO流指的是数据像连绵的流体一样进行传输

  • 作用是 在本地磁盘和网络上操作数据

IO流的分类
  • 按数据流向分

    - 输入流:读取数据
    - 输出流:写数据
    - 按操作方式分
    - 字节流:InputStream: 按字节的方式读取
    - •               OutPutStream:按字节的方式写数据
    - 字符流:Reader:按字符的方式读取
    - •               Writer:按字符的方式写数据
IO流体系
  • 字符流:按字符读写数据的IO流

  • Reader抽象类

  • FileReader

  • BuffereReader

  • Writer抽象类

  • FileWriter

  • BuffereWriter

  • 字节流:按字节读写数据的IO流

  • InputStream抽象类

  • FileInputStream

  • BuffereInputStream

  • OutStream抽象类

  • FileOutStream

  • BuffereOutputStream

  •  

 

File类

成员方法

        System.out.println("------------------------------");
       //获取绝对路径
       System.out.println(file.getAbsolutePath());
       System.out.println("------------------------------");
       //获取相对路径 相对于当前项目路径来讲
       System.out.println(file.getPath());
       System.out.println("------------------------------");
       //获取文件名称
       System.out.println(file.getName());
       //获取指定文件夹里的所有的文件
       File file5 = new File("lib");
       String[] list = file5.list();
       for (int i = 0; i < list.length; i++) {
           System.out.println(list[i]);
      }
        System.out.println("------------------------------");
       File file6 = new File("lib");
       File[] files = file6.listFiles();
       for (int i = 0; i < files.length; i++) {
           System.out.println(files[i].getName());
      }

 

 

public static void main(String[] args) throws IOException {
       File file = new File("lib/a.txt");
       //判断是否是文件
       System.out.println(file.isFile());
       System.out.println("------------------------------");
       //判断是否是文件夹
       System.out.println(file.isDirectory());
       System.out.println("------------------------------");
       //创建文件
       File file1 = new File("lib/b.txt");
       file1.createNewFile();
       System.out.println("------------------------------");
       //创建单个目录
       File file2 = new File("lib/b");
       file2.mkdir();
       //创建单级个目录
       File file3 = new File("lib/b/a");
       file3.mkdirs();
       System.out.println("------------------------------");
       //判断文件是否存在
       System.out.println(file3.exists());
  }
字符流读数据一次读一次
 public static void main(String[] args) throws IOException {
       //创建字符输入流
       Reader reader = new FileReader("lib/a.txt");
       //读取数据
       int len ;
//       (len = reader.read())!= -1
//               1.执行 reader.read()
//               2.读取的值赋值给len
//               3.将len和-1 进行比较 如果是-1 跳出循环
       while ((len = reader.read())!= -1){
           System.out.print(len+"   ");
      }
       //释放流
       reader.close();
  }
字符流读数据已数组读取
public static void main(String[] args) throws IOException {
       //创建字符输入流
       Reader reader = new FileReader("lib/a.txt");
       //读取数据
       int len ;
       char[] chars = new char[3];
       while ((len = reader.read(chars))!= -1){
           String s = new String(chars,0,len);
           System.out.print(s+" ");
      }
       //释放流
       reader.close();
  }
字符流写入数据
 public static void main(String[] args) throws IOException {
        //创建字符输入流
       Writer  writer = new FileWriter("lib/b.txt");
       //写入数据
        char[] chars= {'w','b','b','b','b','b','b','b'};
        writer.write(chars,0,3);
        writer.write('2');
        writer.write("haohaoxuexi");
       //释放流
       writer.close();
  }
字符流复制数据到指定文件
  public static void main(String[] args) throws IOException {
//       io流复制步骤
//               1.创建字符输入流文件
       FileReader fr= new FileReader("lib/a.txt");
//               2.创建字符输出流文件
       FileWriter wr = new FileWriter("lib/b.txt");
//               3.定义变量,记录读取的数据
       int len;
//               4.循环读取数据 并将数据赋值给变量
//               5.将读取的数据写到输出文件中
       while ((len=fr.read())!=-1){
           wr.write(len);
      }
//               6.释放资源 秀开后闭
       fr.close();
       wr.close();
  }
   public static void main(String[] args) throws IOException {
//       io流复制步骤
//               1.创建字符输入流文件
       FileReader fr= new FileReader("lib/a.txt");
//               2.创建字符输出流文件
       FileWriter wr = new FileWriter("lib/b.txt");
//               3.定义变量,记录读取的数据
       int len;
       char[] chars = new char[1024];
//               4.循环读取数据 并将数据赋值给变量
//               5.将读取的数据写到输出文件中
       while ((len=fr.read(chars))!=-1){
           wr.write(chars,0,len);
      }
//               6.释放资源
       fr.close();
       wr.close();

  }
字符缓冲流标准写法
  public static void main(String[] args) throws IOException {
//       io流复制步骤
//               1.创建字符输入流文件
       FileReader fr= new FileReader("lib/a.txt");
       BufferedReader bufferedReader = new BufferedReader(fr);
//               2.创建字符输出流文件
       FileWriter wr = new FileWriter("lib/b.txt");
       BufferedWriter bufferedWriter = new BufferedWriter(wr);
//               3.定义变量,记录读取的数据
       int len;
//               4.循环读取数据 并将数据赋值给变量
//               5.将读取的数据写到输出文件中
       while ((len=bufferedReader.read())!=-1){
           bufferedWriter.write(len);
//           这里记着换行 不同的系统有不同换行符
           bufferedWriter.newLine();//这里是java根据不同的系统进行换行
      }
//               6.释放资源
       bufferedWriter.close();
       bufferedWriter.close();

  }
字符流只能拷贝纯文本文件,不能拷贝其他文件 如:jpg

字节流拷贝文件(拷贝png/jpg)

  public static void main(String[] args) throws IOException {
//       io流复制步骤
//               1.创建字节输入流文件
       FileInputStream inputStream = new FileInputStream("lib/b/a/bn.png");
       BufferedInputStream bufferedReader = new BufferedInputStream(inputStream);
//               2.创建字节输出流文件
       FileOutputStream fo = new FileOutputStream("lib/b/a/b.png");
       BufferedOutputStream bufferedWriter = new BufferedOutputStream(fo);
//               3.定义变量,记录读取的数据
       int len;
//               4.循环读取数据 并将数据赋值给变量
//               5.将读取的数据写到输出文件中
       while ((len=bufferedReader.read())!=-1){
           bufferedWriter.write(len);
      }
//               6.释放资源
       bufferedWriter.close();
       bufferedWriter.close();

  }
 public static void main(String[] args) throws IOException {
//       io流复制步骤
//               1.创建字符输入流文件
       FileInputStream inputStream = new FileInputStream("lib/b/a/bn.png");
       BufferedInputStream bufferedReader = new BufferedInputStream(inputStream);
//               2.创建字符输出流文件
       FileOutputStream fo = new FileOutputStream("lib/b/a/b.png");
       BufferedOutputStream bufferedWriter = new BufferedOutputStream(fo);
//               3.定义变量,记录读取的数据
//       int len;
//       byte[] chars = new byte[1024];
//               4.循环读取数据 并将数据赋值给变量
//               5.将读取的数据写到输出文件中
//       while ((len=inputStream.read(chars))!=-1){
//           fo.write(chars,0,len);
//       }
      while ((len=bufferedReader.read())!=-1){
           bufferedWriter.write(len);
      }
//               6.释放资源
       bufferedWriter.close();
       bufferedWriter.close();

  }

 

 

posted on 2021-01-10 22:30  紫玉坏小子  阅读(93)  评论(0编辑  收藏  举报