zoukankan      html  css  js  c++  java
  • 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();
      
        }
      }

                               

  • 相关阅读:
    leetcode刷题-54螺旋矩阵
    leetcode刷题-53最大子序和
    leetcode刷题-52N皇后2
    leetcode刷题-51N皇后
    leetcode刷题-50Pow(x, n)
    leetcode刷题-37解数独
    leetcode刷题-49字母异位词分组
    leetcode刷题-48旋转图像
    数据结构—B树、B+树、B*树
    LeetCode–旋转数组的最小数字
  • 原文地址:https://www.cnblogs.com/ykjava/p/6781522.html
Copyright © 2011-2022 走看看