5.10Java实操IO流,面向接口编程,面向父类编程

5.10Java实操IO流,面向接口编程,面向父类编程

写一个程序需要的步骤:

  • 选择源--->流走那些数据源

  • 选择流--->选择什么流走方式(选择具体的子类)

  • 具体的操作--->流里面的方法(一个一个来还是一段一段来读、写)

  • 释放--->释放系统资源

普通io流类:

package iostudy.ioprogramme;

import java.io.*;
import java.util.ArrayList;

/**
* 第一个io程序:--->理解操作步骤
* 1.创建源
* 2.选择流
* 3.进行文件操作
* 4.释放资源
* @author Lucifer
*/
public class IoTestNo1 {
   public static void main(String[] args) throws FileNotFoundException {
       //1.创建源文件
       File src = new File("D:/workspace/practice/main/java/iostudy/ioprogramme/abc.txt"); //操作io流读取内容的时候不能直接操作文件夹,要操作文件夹需要使借助递归的方法
       //2.选择流
       /*
       因为与外界产生了联系,所以产生了异常
       处理方式:
       1.try---catch--->手写处理方法
       2.throw--->抛给方法的调用处不去处理
        */
       try {
           InputStream is = new FileInputStream(src);
           //进行操作(读取)
           int data1 = is.read(); //第一个数据
           int data2 = is.read(); //第二个数据
           int data3 = is.read(); //第三个数据
           int data4 = is.read();
//           System.out.println((char) data1); //这里需要转型成char,因为返回的是int是一个代号
//           System.out.println((char) data2);
//           System.out.println((char) data3);
//           System.out.println((char) data4); //没有第四个数据,返回一个符号
           char data11 = (char) data1;
           char data12 = (char) data2;
           char data13 = (char) data3;
           char data14 = (char) data4;
           char[] d1 = {data11,data12,data13,data14};
           System.out.println(d1);
           for (char d2 : d1){
               System.out.println(d2);
          }
           //释放资源
           is.close();
      }catch (FileNotFoundException e){
           e.printStackTrace();
      }catch (IOException e){
           e.printStackTrace();
      }
  }
}

规范io流类:

package iostudy.ioprogramme;

import java.io.*;

/**
* 第一个io程序:--->理解操作步骤--->改成标准的形式
* 1.创建源
* 2.选择流
* 3.进行文件操作
* 4.释放资源
* @author Lucifer
*/
public class IoTestNo2 {
   public static void main(String[] args) {
       //1.创建源文件
       //操作io流读取内容的时候不能直接操作文件夹,要操作文件夹需要使借助递归的方法
       File src1 = new File("D:/workspace/practice/main/java/iostudy/ioprogramme/abc.txt");
       //2.选择流
       /*
       因为与外界产生了联系,所以产生了异常
       处理方式:
       1.try---catch--->手写处理方法
       2.throw--->抛给方法的调用处不去处理
        */
       InputStream is = null;
       try {
           is = new FileInputStream(src1); //如果放在try里面建立对象那么在下面代码中不可以使用,所以要提升作用域
           //进行操作(读取)--->利用循环进行读取
           int temp = -1; //临时节点
           byte[] chars = new byte[1024]; //FileInputStream的read方法需要的是byte类型的数组不是char类型
           /*
           char类型的数组是FileReader方法需要的
            */
           while ((temp = is.read(chars))!=-1){
               String s = new String(chars, 0, temp);
               System.out.println(s);
          }
      }catch (FileNotFoundException e){
           e.printStackTrace(); //如果后期出了异常,将释放资源放在上面的位置不对,要在下面加finally
      }catch (IOException e){
           e.printStackTrace();
      }finally {
           try {
               if (null!=is){
                   //释放资源
                   is.close(); //如果前面一开始is就创建一场,所以前面要判断不为空指针
              }
          }catch (IOException e){
               e.printStackTrace();
          }
      }
  }
}
/*
1.至少返回练习十遍以上
*/

 

It's a lonely road!!!
原文地址:https://www.cnblogs.com/JunkingBoy/p/14752518.html