java Io 流类详解

 

关于java  流类的复习;习惯性的复习按照图结构一层层往下深入去了解去复习,最后通过代码来实现感觉印象会更深刻一些;

 

 

关于 I/O流:IO可以理解为JAVA用来传递数据的管道,创建一个IO,就相当于将管道与某个数据源连接到一起了.

   字节流:数据流中最小的数据单元是字节。  字节:字节是一个八位的二进制数是一个很具体的存储空间;

   字符流:数据流中最小的数据单元是字符;  字符:是一个抽象的符号,例如 1、2、3 、人  等   (并不是说直接传输字符,而是将字符按照指定的编码规则,转成对应的字节流后进行传输)


java的常用输入、输出流其实都是继承自4个抽象类,分别是:

基于单字节的InputStream,OutputStream类(面向字节形式的I/O)
基于双字节的Unicode代码单元的 Reader, Writer类(面向字符形式的I/O)

    Reader(读入Unicode编码字节)  

       

  •  CharArrayReader(从字符串数组中读取字符)
    /*CharArrayReader  从字符串数组中读取字符   */
     public static void chararrayreader() throws IOException {
         char [] a = new char[]{'a','b','c'};
         CharArrayReader charArrayReader = new CharArrayReader(a);
            /*  当 CharArrayReader  读取不到字符时  返回值为-1   */
         int i = 0;
         while ((i = charArrayReader.read())!= -1){
             System.out.println("字符 :"+(char)i);
         }
    
     }
  •   InputStreamReader(从本地系统文件中读取字符序列)
  •   FileReader(InputStreamReader的子类)
  • StringReader(从字符串数组中读取字符序列)
  • PipedReader(从线程管道中读取字符序列)
  • InputStreamReader(从输入流中读取数据)
     /* 关于 从本地文件中读取 字符序列 */
      public static void inputreader() throws IOException {
    
          /*从文件中  读取数据到 数据流 */
          InputStream inputStream = new FileInputStream("E:\test.txt");
          /* 将字节流转换成 字符流 */
          InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
    
          char []cha = new char[1024];
          int len = inputStreamReader.read(cha);
          System.out.println(new String(cha,0,len));
          /* 关流 */
          inputStreamReader.close();
    
      }

Writer(写入) 这个不多讲 和上边reader 相反 一个写入,一个读出 直接上代码:

代码参考:http://blog.csdn.net/lanhuzi9999/article/details/36188047

 /* 关于 从本地文件中读取 字符序列 */
  public static void inputreader() throws IOException {

      /*从文件中  读取数据到 数据流 */
      InputStream inputStream = new FileInputStream("E:\test.txt");
      /* 将字节流转换成 字符流 */
      InputStreamReader inputStreamReader = new InputStreamReader(inputStream);

      char []cha = new char[1024];
      int len = inputStreamReader.read(cha);
      System.out.println("本地文件:"+new String(cha,0,len));
      /* 关流 */
      inputStreamReader.close();

  }

  /*  Writer  */
  public static void writer() throws IOException {
      /*String Writer */
      String   string = "从今天起好好复习";
      StringWriter stringWriter = new StringWriter();
      stringWriter.write("你好吗  ");
      stringWriter.write("这是写入的  writer ");

      System.out.println(string+stringWriter.toString()
      );

      /*OutputStreamWriter  FileWriter*/
      OutputStream out = System.out;//打印到控制台  
//      OutputStream out = new FileOutputStream("D:\demo.txt");//打印到文件  
      OutputStreamWriter osr = new OutputStreamWriter(out);//输出  
//      OutputStreamWriter osr = new OutputStreamWriter(new FileOutputStream("D:\demo.txt"));//两句可以综合到一句。  
//      int ch = 97;//a  
//      int ch = 20320;////      osr.write(ch);  
      String str = "你好吗?";//你好吗?  
      osr.write(str);
      osr.flush();
      osr.close();
  }
    public static void transWriteByBuf() throws IOException {
//      OutputStream out = System.out;//打印到控制台。  
        OutputStream out = new FileOutputStream("D:\demo.txt");//打印到文件。  
        OutputStreamWriter osr = new OutputStreamWriter(out);//输出  
//      OutputStreamWriter osr = new OutputStreamWriter(new FileOutputStream("D:\demo.txt"));//综合到一句。  
        BufferedWriter bufw = new BufferedWriter(osr);//缓冲  
//      int ch = 97;//a  
//      int ch = 20320;////      osr.write(ch);  
        String str = "你好吗?
我很好!";//你好吗?  
        bufw.write(str);
        bufw.flush();
        bufw.close();
      

  }

File  类  (重点讲解)

  •       File  类的对象  表示了磁盘上的文件或者文件目录
  •       File类直接处理文件  和文件系统       
  •       File类提供了方法 对文件或者文件目录进行操作
  •       File 常用方法  
  •         懒得写了  直接复制粘贴来源:http://www.jb51.net/article/36126.htm               

     创建方法 

    1.boolean createNewFile() 不存在返回true 存在返回false
    2.boolean mkdir() 创建目录
    3.boolean mkdirs() 创建多级目录

    删除方法

    1.boolean delete()
    2.boolean deleteOnExit() 文件使用完成后删除

  • 判断方法

    1.boolean canExecute()判断文件是否可执行
    2.boolean canRead()判断文件是否可读
    3.boolean canWrite() 判断文件是否可写
    4.boolean exists() 判断文件是否存在
    5.boolean isDirectory()
    6.boolean isFile()
    7.boolean isHidden()
    8.boolean isAbsolute()判断是否是绝对路径 文件不存在也能判断

    获取方法

    1.String getName()
    2.String getPath()
    3.String getAbsolutePath()
    4.String getParent()//如果没有父目录返回null
    5.long lastModified()//获取最后一次修改的时间
    6.long length()
    7.boolean renameTo(File f)
    8.File[] liseRoots()//获取机器盘符
    9.String[] list()
    10.String[] list(FilenameFilter filter)

  • 常用方法实现 
  •  /*File  类  */
      public static  void File () throws IOException {
          System.out.println("woca ");
          /*创建一个路径*/
          File file3 = new File("E://file//jj");
         System.out.println( file3.mkdir());
          /*创建一个文件  */
          File file = new File("E://te.txt");
          file.createNewFile();
    
          /* 根据一个 基路径去创建文件  */
          File file2 = new File(file3,"tt.txt");
          file2.createNewFile();
          /* 判断  file对象是否是 文件或者路径 */
    
          System.out.println("是否是路径"+file3.isDirectory());
          System.out.println("是否是文件"+file2.isFile());
    
          /*  获取某个文件夹内文件的目录 */
    
          File file4 = new File("E://workspace");
    
          String names[]  = file4.list();
          for(String name :names) {
              System.out.println(name);
          }
          
          /*  删除文件  */
          file2.delete();
    
      }

     附上  测验代码:

    import java.io.*;
    
    /**
     * Created by 杨一 on 2017/4/28.
     * java 流
     */
    public class IO {
    
        public static void main(String []args) throws IOException {
    
            inputreader();
            writer();
            File();
        }
        /*CharArrayReader  从字符串数组中读取字符   */
     public static void chararrayreader() throws IOException {
         char [] a = new char[]{'a','b','c'};
         CharArrayReader charArrayReader = new CharArrayReader(a);
            /*  当 CharArrayReader  读取不到字符时  返回值为-1   */
         int i = 0;
         while ((i = charArrayReader.read())!= -1){
             System.out.println("字符串数组中 :"+(char)i);
         }
    
     }
      /* 关于 从本地文件中读取 字符序列 */
      public static void inputreader() throws IOException {
    
          /*从文件中  读取数据到 数据流 */
          InputStream inputStream = new FileInputStream("E:\test.txt");
          /* 将字节流转换成 字符流 */
          InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
    
          char []cha = new char[1024];
          int len = inputStreamReader.read(cha);
          System.out.println("本地文件:"+new String(cha,0,len));
          /* 关流 */
          inputStreamReader.close();
    
      }
    
      /*  Writer  */
      public static void writer() throws IOException {
          /*String Writer */
          String   string = "从今天起好好复习";
          StringWriter stringWriter = new StringWriter();
          stringWriter.write("你好吗  ");
          stringWriter.write("这是写入的  writer ");
          System.out.println(string+stringWriter.toString()
          );
    
    
          OutputStream out = System.out;//打印到控制台
          OutputStream out1 = new FileOutputStream("D:\demo.txt");//打印到文件
          OutputStreamWriter osr = new OutputStreamWriter(out);//输出
          OutputStreamWriter osr1 = new OutputStreamWriter(new FileOutputStream("D:\demo.txt"));//两句可以综合到一句。
    //      int ch = 97;//a
    //      int ch = 20320;////      osr.write(ch);
          String str = "你好吗?";//你好吗?
          osr.write(str);
          osr.flush();
    
          /* 这是关闭  输出流的  一旦关闭 打印什么的  就不好用了
          *  */
      /*    osr.close();*/
    
      }
        public static void transWriteByBuf() throws IOException {
    //      OutputStream out = System.out;//打印到控制台。
            OutputStream out = new FileOutputStream("D:\demo.txt");//打印到文件。
            OutputStreamWriter osr = new OutputStreamWriter(out);//输出
    //      OutputStreamWriter osr = new OutputStreamWriter(new FileOutputStream("D:\demo.txt"));//综合到一句。
            BufferedWriter bufw = new BufferedWriter(osr);//缓冲
    //      int ch = 97;//a
    //      int ch = 20320;////      osr.write(ch);
            String str = "你好吗?
    我很好!";//你好吗?
            bufw.write(str);
            bufw.flush();
            bufw.close();
      }
      /*File  类  */
      public static  void File () throws IOException {
          System.out.println("woca ");
          /*创建一个路径*/
          File file3 = new File("E://file//jj");
         System.out.println( file3.mkdir());
          /*创建一个文件  */
          File file = new File("E://te.txt");
          file.createNewFile();
    
          /* 根据一个 基路径去创建文件  */
          File file2 = new File(file3,"tt.txt");
          file2.createNewFile();
          /* 判断  file对象是否是 文件或者路径 */
    
          System.out.println("是否是路径"+file3.isDirectory());
          System.out.println("是否是文件"+file2.isFile());
          /*  获取某个文件夹内文件的目录 */
          File file4 = new File("E://workspace");
          String names[]  = file4.list();
          for(String name :names) {
              System.out.println(name);
          }
          /*  删除文件  */
          file2.delete();
    
      }
    }

                             

原文地址:https://www.cnblogs.com/ykjava/p/6781522.html