java - 实用方法 - 传递文件或字符串?

标签 java utility-method

<分区>

这是实用方法的示例:

public static Long getFileSize(String fileString) {

    File file = new File(fileString);

    if (file == null || !file.isFile())
        return null;

    return file.length();
}

将字符串而不是文件传递给这样的方法是一种好习惯吗?一般来说,在制作这种风格的实用方法时应该应用什么推理?

最佳答案

这是我的首选解决方案:

public static Long getFileSize(String path) {
    return getFileSize(new File(path));
}

public static Long getFileSize(File file) {
    return (!file.isFile()) ? -1L : file.length();
}

请注意,它返回 -1L 而不是 0L,以允许调用者区分空文件和由于某种原因无法确定长度的"file"。 file.length() 在您没有零长度文件的某些情况下将返回零;例如

  • 文件不存在时
  • 文件是目录时
  • 文件是一个特殊文件(例如设备文件、管道等)并且操作系统无法确定其长度时。

file.isFile() 调用处理这些情况。但是,方法是否应该返回 -1L 或抛出异常是值得商榷的。这场辩论的答案取决于 -1L 案例是“正常”还是“异常”,而这只能引用设计使用该方法的上下文来确定,

关于java - 实用方法 - 传递文件或字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2796137/

相关文章:

java - @Autowired session 范围 bean 不指向同一实例

java - 函数的可变长度参数列表?

java - Android ListView 中的 Twitter4J 时间线

java - 如何从数组中获取 5 个数字的序列

c# - 我应该将常用实用方法放在 Asp.Net Core MVC 项目中的哪里?

java - 如何创建实用程序类?

asp.net-mvc-3 - 我应该将我的实用程序类放在 ASP.NET MVC3 应用程序中的什么位置?

java - Spring boot 上的基本 Controller 给出 404

java - 您更喜欢重复代码而不是实用程序类吗?

flutter - 是否可以在 Flutter 中将类作为参数传递给函数?