美文网首页
Java的IO操作

Java的IO操作

作者: 老街寻迹 | 来源:发表于2020-04-11 15:25 被阅读0次

    Java的IO操作分为磁盘IO和内存流IO。

    1、磁盘IO:FileInputStream和FileOutputStream

    File file = new File("D:\\temp\\test.docx");

    if (file.exists()) {

        // 文件输入流

        FileInputStream in = new FileInputStream(file);

        // 文件输出流

        FileOutputStream out = new FileOutputStream("D:\\temp\\testNew.docx");

        byte[] bytes = new byte[1024];

        int len =0;

        while ((len = in.read(bytes)) >0) {

            // 这里必须是0到len,否则可能会有文件损坏的问题

            out.write(bytes, 0, len);

        }

        // 磁盘IO需要关闭流 

        in.close();

        out.close();

    }

    2、内存流IO:ByteArrayInputStream和ByteArrayOutputStream

    // 数据源

    String str ="abc";

    byte[] testByte = str.getBytes();

    // 输入流

    ByteArrayInputStream in = new ByteArrayInputStream(testByte);

    // 输出流

    ByteArrayOutputStream out = new ByteArrayOutputStream();

    int ch =0;

    while ((ch = in.read()) != -1) {

        out.write(ch);

    }

    // 内存流不需要关闭IO,不用后Java的垃圾回收机制会将它回收,而且其close()方法体为空,就算调用了close()也是什么事都不会做。

    3、byte数组和上面互转

    (1)FileInputStream转为byte[]

    FileInputStreamin =new FileInputStream(file);

    if (in.available() !=0) {

    byte[] bytes =new byte[in.available()];

        in.read(bytes);

    }

    (2)ByteArrayInputStream转为byte[]

    (3)byte[]转为FileInputStream

    (4)byte[]转为ByteArrayInputStream 

    byte[] byt =new byte[1024];

    ByteArrayInputStream input =new ByteArrayInputStream(byt);

    相关文章

      网友评论

          本文标题:Java的IO操作

          本文链接:https://www.haomeiwen.com/subject/njwymhtx.html