• 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

     

  • 相关阅读:
    异构数据库同步工具调研
    ubuntu16.04 Golang语言开发环境搭建
    串口USB单一映射及重命名
    linux arm 交叉编译ACE(ubuntu16.04)
    ubuntu16.04 下Mongo数据库搭建
    ubuntu 增加一个用户 并赋予权限
    go 通过http发送图片file内容
    git 简单命令总结
    gitlab ssh_key
    ubuntu16.04 程序开机自启动设置及启动优化
  • 原文地址:https://www.cnblogs.com/erdanyang/p/10149636.html
Copyright © 2020-2023  润新知