Java输入输出流练习3-7,烦请老师检查并指正~

Java输入输出流练习3-7,烦请老师检查并指正~

​package com.imooc.file;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class InputStreamDemoOne {

public static void main(String[] args) {
try {
File file = new File("/Users/kaylee/Desktop/speech.txt");
FileInputStream fis = new FileInputStream(file);
int n = 0;
int count = 0;
System.out.println("文本内容为:");
while((n=fis.read() )!= -1) {
System.out.print((char)n);
count++;
}
System.out.println();
System.out.println("统计结果为:" + file.getName() + "文件中共有" + count + "个字节");
}catch(FileNotFoundException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}
}

}

老师我想请问下,这个练习中为什么要先创建一个File类对象,然后才用FileInputStream通过这个file对象再创建一个输入流文件的实例对象呀?为什么不能像前两节课中一样,直接通过FileInputStream(String name)创建啊?请问两者有什么不一样的地方呢?

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

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

1回答
好帮手慕小蓝 2021-10-11 09:59:20

同学你好,同学的代码符合题目要求,逻辑清晰,书写规范,做的很棒。

实际开发中建议同学使用File类创建文件对象,原因如下:

由于IO操作会与操作系统产生交互,对代码性能影响较大,所以建议开发中尽量减少IO操作的次数。

当使用File类管理文件对象的时候,我们可以先判断该文件是否存在,如果文件存在再去创建流对象执行IO操作,如果文件不存在,就不需要再去创建流对象了。这样对于内存开销和运行效率来讲都是较为优化的选择。

祝学习愉快~


  • 提问者 Heijyu #1

    老师,可是FileInputStream在创建时本身就会抛出文件不存在的异常呀?我拍的理解是,先创建一个File对象的话,可以方便调用File类方法,比如getName( ), getPath( )等,但是如果只有一个FileInputStream对象的话,它就没办法调用上述提到的文件,不便于文件的管理~我感觉先创建File类对象,其实是比直接创建FileInputStream多操作了一步的啊,也就是多操作了一次IO和系统的交互~

    2021-10-11 10:45:55
  • 好帮手慕小蓝 回复 提问者 Heijyu #2

    同学你好,同学对于File类可以调用其他方法的理解是正确的,确实可以在读取文件之前进行其他的操作。

    File类和流对象的IO操作涉及较多的底层实现原理,File类的性能开销较低,而流的性能开销较大。所以通常我们建议使用File类预先构建文件对象,这和代码层面的操作步骤关系不是很大。

    祝学习愉快~


    2021-10-11 11:01:34
  • 提问者 Heijyu 回复 好帮手慕小蓝 #3

    好的,那以后我就还是先写File类对象在进行别的操作~谢谢老师~

    2021-10-11 11:08:42
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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