zoukankan      html  css  js  c++  java
  • java.io类

    一、IO类的基本知识

    1、字节流可以读文本文件和非文本文件

    2、字符流只能读文本文件

    3、当输出流到文件时,如果文件不存在,会自动创建文件;当文件存在时,会自动覆盖掉之前的文件。

    4、节点流只有FileInputStream、FileOutputStream、FileReader、FileWriter这四个。其他的全是处理流。

    5、当关闭输入流或者输出流的时候,只关闭最外层的流就可以了

    二、File类(此对象对应着文件或者文件目录):

            File file = new File("");  //这个文件目录是相对于System.getProperty("user.dir")这个路径来说的
            File file2 = new File("/");  //这个文件目录就是绝对路径,根目录

    File类注意事项:同一级文件系统下不允许同时存在相同名字的目录或文件,目录名和文件名不能相同(带后缀的目录“root.txt”和文件“root.txt”也不能同时存在),但是root.txt和root可以同时存在,因为“root.txt”和“root”会被判断两个不同的名字;即如果文件系统下有root目录,那么在这里名为root的文件是创建不出来的,如果文件系统下有root文件,那么在这里名为root的目录是创建不出来的。

    1、createNewFile创建文件

    2、exists文件是否存在

    3、FileInputStream文件输入的流

    4、getAbsolutePath获取绝对路径

    5、toPath

    三、IO流

    1、抽象基类

    InputStream,OutputStream,Writer,Reader

    2、节点流

    FileInputStream,FileOutputStream,FileWriter,FileReader,ByteArrayInputStream(需要用缓冲流包装),ByteArrayOutputStream(这个不需要缓冲流包装)

    3、处理流(包装节点流)

    (1)缓冲流(四个)

    缓冲流的原理:本质上也是一个阻塞操作,只不过阻塞的次数比较少而已,因为它一次性读的数据比较多(8192)。

    ①  BufferedInputStream

          BufferedOutputStream-->flush

       BufferedReader-->readLine

       BufferedWriter-->flush

    ②  flush的使用

       flush如果缓冲区不满,强制输出。如果缓冲区满了的话,就会自动输出,就不用flush了。close方法也会强制输出。

    (2)转换流(缓冲流包装转换流,转换流包装节点流)

      InputStreamReader  字节数组转换成字符串

      OutputStreamWriter  字符串转换成字节数组

    (3)标准输入流

      System.in是个字节流

    (4)打印流(包装节点流)

      PrintStream

    (5)数据流(包装节点流)

      数据流(针对基本数据类型,字符串,字节数组)

      DataOutputStream

      DataInputStream

    (6)对象流(包装节点流)

    ①这个对于static、transient修饰的属性是不起作用的

    ②序列化的对象必须实现Serializable

    ③显示定义SerializableID。首先,一是为了区分同一类的不同版本。其次,另一个是通过这个号识别那些文件属于一个类只是版本不同而已

      ObjectOutputStream

      ObjectInputStream

    (7)随机访问文件流(单独使用)

      RandomAccessFile

    二、java io方式读取字符串

        public static void main(String[] args) throws Exception{
            File file = new File("test.txt");
            Reader is = new FileReader(file);
            char[]  buffer = new char[10];
            StringBuffer str = new StringBuffer();
            int len = 0;
            while((len=is.read(buffer))!=-1) {
                System.out.println(len);
                str.append(buffer,0,len);    
            }
            System.out.println(str);
            System.out.println(Charset.defaultCharset());
            is.close();
        }

     

     

    参考文献

    java IO流:https://www.cnblogs.com/ningvsban/p/3600185.html

     

  • 相关阅读:
    golang实现dns域名解析(一)
    互联网协议入门(一)(转)
    DNS入门(转)
    随笔:Golang 时间Time
    mysql查询某一个字段是否包含中文字符
    screen状态变Attached连接会话失败
    golang :连接数据库闲置断线的问题
    神奇的GO语言:空接口(interface)
    Go语言:变参函数
    go语言:函数参数传递详解
  • 原文地址:https://www.cnblogs.com/erdanyang/p/10149636.html
Copyright © 2011-2022 走看看