首页 > 编程语言 > 详细

java IO操作,看完你应该就清晰了。

时间:2020-10-12 20:08:21      阅读:33      评论:0      收藏:0      [点我收藏+]

前言:

 

javaIO里的一些知识对于一个java新手来说,是比较难理解的。因为里面存在一些很绕的概念,比如:

1.到底是读入写出,还是读出写入

2.我要将一个文件的内容拷贝到另一个文件是先用InputStream还是OutputStream

3.什么时候用FileInputStream,什么时候用ByteArrayInputStream,什么时候又用StreamBufferInputStream

要印象深刻的解决这些问题,还是那句话,得从理解出发。

 

正题:

 

对于IO的基础知识模型,分类,及各个类的特性相信有很多的帖子说的很详细了,本文就不再赘述了。

 

首先我们阐述一个聊天的概念,举个例子,假如你现在在跟小明聊天,小明在给你倾述他失恋了有多么多么难受,是不是他心里有一堆话然后通过嘴巴表达出来。然后你在认真的聆听并且感受他的难受,是不是通过耳朵接收然后放到心里去感受。

 

好了,我们把这个场景放到程序里面如下图:

技术分享图片

(请先放弃你们的审美,这样你才能认出耳朵和嘴巴)

这里有四个节点,每个节点都有自己的职责,首先如果小明的嘴巴要表达他心里的难受需要去读取心里的内容,我们知道读取我们都用read()方法。InputStream才有read()方法,所以这时我们肯定是用InputStream。当你的耳朵接收到小明表达的内容后,需要写到你的心里去,这是我们要用到write()方法,可想而知是用OutputStream

 

到这里我们回到上面的问题,其实是一个读出写入的过程,然后我们把两个心看成两个file,那么要把小明的内容copy到你的心里就分以下步骤:

1.创建小明心的FileInputStream,然后调用它的read()方法,把读到的内容放到Byte[]中。

2.创建你心的FileOutputStream,然后调用write()方法,把上一步Byte[]中的内容写到你心里去。

以下测试场景可以对照测试:

创建两个文件xiaoming‘s-heart.txtyour-heart.txt并且在xiaoming‘s-heart.txt中输入内容

技术分享图片

然后执行以下码

public static void main(String[] args){
        File xiaomingFile = new File("E:/testFile/xiaoming‘s-heart.txt");
        File yourFile = new File("E:/testFile/your-heart.txt");
        try {
            InputStream is = new FileInputStream(xiaomingFile);
            OutputStream os = new FileOutputStream(yourFile);
            byte[] buffer = new byte[4096];
            int readLen = 0;
            while ((readLen = is.read(buffer, 0, 4096)) >= 0) {
                    System.out.print((char)readLen);
                    os.write(buffer, 0, readLen);
                    os.flush();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

结果

技术分享图片

我们可以看到,xiaoming‘s-heart.txt文件中的内容已经copy到your-heart.txt,这是一个很简单的例子,知识方便大家理解上面的理论场景

至于什么时候该用什么流其实只需要根据不同源和目的地选择即可。

 

 

总结:

 

本文只是帮助一些深陷其中的朋友简单理解一下javaio操作,希望简单的场景能让大家有一个清晰的理解。涉及的内容很少。其他io相关知识可以通过其他网络资料获取。

 

java IO操作,看完你应该就清晰了。

原文:https://www.cnblogs.com/yixing-tuotuo/p/13803970.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!