栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

FileInputStream.available可能会使我愚蠢吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

FileInputStream.available可能会使我愚蠢吗?

可以 依靠

new FileInputStream(fileName).available()
,如果指定的文件是空回零。

不能 依赖

new FileInputStream(fileName).available() ==0
该文件为空的确定测试。如果
fileName
是本地文件系统上的常规文件,则可能会起作用。但是,如果
fileName
是设备文件,或者如果它是远程文件系统上的文件,则
available()
可能返回零以报告a
read()
必须阻塞一段时间。(或者如果是远程文件系统,则可能不是。)

测试常规文件长度的一种更可靠的方法是使用

new File(fileName).length() ==0
。但是,对于设备文件或管道,
length()
无论最终可以读取的字节数如何,调用都可能返回零。请记住,
newFile(fileName).length()
如果文件不存在,该参数也将返回零。

编辑 如果要进行可靠的测试以查看文件是否为空,则必须进行多次调用:

public static isEmptyFile(String fileName) {    File file = new File(fileName);    if (!file.exists()) {        return false;    } else if (file.length() != 0L) {        return false;    } else if (file.isFile()) {        return true;    } else if (file.isDirectory()) {        return false;    } else {        // It may be impossible to tell that a device file / named pipe is        // "empty" without actually reading it.  This is not a failing of        // Java: it is a logical consequence of the way that certain        // devices, etc work.        throw new CannotAnswerException(...);    }}

但是,建议您在运行应用程序的所有平台上使用多种“文件”类型对此进行仔细测试。一些文件谓词的行为被记录为特定于平台的;参见javadoc。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/570592.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号