FileInputStream的两个构造函数

1. FileInputStream inOne = new FileInputStream("hey.txt");
2. File f=new File("hey.txt");
   FileInputStream inTwo = new FileInputStream(f);

想问下这两个构造函数的差别在哪里,“第二个构造函数允许在把文件连接到输入流之前对文件做进一步分析”是什么分析?
谢谢啦!

阅读 6.4k
2 个回答

可以看一下源码,

    public FileInputStream(String name) throws FileNotFoundException {
        this(name != null ? new File(name) : null);
    }
    public FileInputStream(File file) throws FileNotFoundException {
        String name = (file != null ? file.getPath() : null);
        SecurityManager security = System.getSecurityManager();
        if (security != null) {
            security.checkRead(name);
        }
        if (name == null) {
            throw new NullPointerException();
        }
        if (file.isInvalid()) {
            throw new FileNotFoundException("Invalid file path");
        }
        fd = new FileDescriptor();
        fd.attach(this);
        open(name);
    }

我也刚学半年,用File作为构造函数参数的这个看不懂, 但是第一个string作为参数的就是在内部用这个string对象new了一个File对象,然后调用第二个构造函数.
所以说本质上这两个是一样的
(有啥不对的望指明)

新手上路,请多包涵

我觉得两者本质上是一样的。

“第二个构造函数允许在把文件连接到输入流之前对文件做进一步分析”是什么分析?
第二种构造方法允许构造流之前,对file文件进行一些额外的操作,比如修改写入删除等等。仅此而已。

推荐问题
logo
101 新手上路
子站问答
访问
宣传栏