inputStream和fileOutputStream的疑问

inputStream和fileOutputStream的疑问

老师,我没用过这两者,所以对于本节有点疑惑,想问问老师。谢谢!


我的理解是上传上来的文件放在内存里,然后要存放在磁盘里就需要读出来 然后写在指定目录或者文件。读的话用inputStream,读完之后用fileOutputStream来写到指定文件outFile。具体的方法是用IOUtils.copy来实现。不知道我理解的有没有问题?


此外还有几个小疑问。

1 是不是用完inputStream/fileInputStream和outputStream/fileOutputStream都要close来释放系统资源呢?


2 如果是的话,为什么inputStream close()这里注释写着这个方法一点用也没有?

* <p> The <code>close</code> method of <code>InputStream</code> does nothing.



​3 为什么我们fileOutputStream close之前要用flush呢?我看到网上的解释说FileOutputStream不需要用flush

The method flush is used to "flush" bytes retained in a buffer. FileOutputStream doesn't use any buffer, so flush method is empty. Calling it or not doesn't change the result of your code.


4 这里判断为什么是!=null呢?我打印了一下 

outFile.getParentFile().mkdirs();

前后都是一个路径的string啊,不是很理解。

if (outFile.getParentFile() != null) {

// 创建文件夹
   outFile.getParentFile().mkdirs();

}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
风间影月 2021-02-24 09:31:57

判断之前的路径是否存在,不存在就创建

  • 提问者 Elsa20 #1

    不存在就创建不应该是

    outFile.getParentFile() == null的判断条件吗?

    但是视频里是!=的判断条件


    2021-02-24 09:37:17
  • 不为空就不要创建了已经存在了
    2021-02-24 09:42:07
  • 提问者 Elsa20 回复 风间影月 #3

    那这样的话 视频里的代码可能出错了 视频里是!= null

    2021-02-24 12:20:10
风间影月 2021-02-24 09:31:40

2,要 flush的,刷一下,网上的不一定对

风间影月 2021-02-24 09:31:16

1,要关一下的,统一操作

  • 提问者 Elsa20 #1

    这里我的理解是正确的吗?

    我的理解是上传上来的文件放在内存里,然后要存放在磁盘里就需要读出来 然后写在指定目录或者文件。读的话用inputStream,读完之后用fileOutputStream来写到指定文件outFile。具体的方法是用IOUtils.copy来实现。

    2021-02-24 09:38:59
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师