java - FileInputStream的两个构造函数
迷茫
迷茫 2017-04-17 11:53:24
[Java讨论组]
1. FileInputStream inOne = new FileInputStream("hey.txt");
2. File f=new File("hey.txt");
   FileInputStream inTwo = new FileInputStream(f);

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

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(2)
PHP中文网

可以看一下源码,

    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文件进行一些额外的操作,比如修改写入删除等等。仅此而已。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号