Java:isBinary方法的类是什么?

时间:2010-04-03 16:33:20

标签: java class binary methods

我习惯使用java.io. *和java.util。*但不习惯树:

com.starbase.util
Class FileUtils

java.lang.Object

  |

  +--com.starbase.util.FileUtils

Source.

那么我应该导入哪个类来使用isBinary方法?我是否“导入java.lang.Object;”或“import java.lang.Object.com.starbase.util.FileUtils;”?

4 个答案:

答案 0 :(得分:2)

您可以import com.starbase.util.FileUtils;import static com.starbase.util.FileUtils.*。层次结构只显示类FileUtils扩展Object(与所有类一样)。

您还必须拥有.jar文件/ API才能访问此类。

编辑:添加了可能的独立实施:

如果你想自己实现这个(我注意到你自己的“琐碎”答案),你可以这样做:

    public static boolean isBinary(String fileName) throws IOException {
        return isBinary(new File(fileName));
    }

    public static boolean isBinary(File file) throws IOException {
        InputStream is = new FileInputStream(file);
        try {
            byte[] buf = new byte[4096];
            int bytesRead;
            while ((bytesRead = is.read(buf)) >= 0)
            {
                for (int i = 0; i < bytesRead; i++) {
                    if (buf[i] == (byte) 0)
                        return true;
                }
            }

            return false;
        } finally {
            is.close();
        }
    }

请注意,我没有测试过这个。

我应该补充一点,这是一个简单的实现。有许多类型的文本文件将被视为二进制文件。如果您允许文本为Unicode和/或UTF-8(或其他文本编码),那么这很快就会变得非常困难。然后你需要开发一些启发式来区分各种文件,这不是100%准确。所以,这实际上取决于你试图用它做什么。

答案 1 :(得分:1)

com.starbase.util.FileUtils不在标准打包的Java SDK中,而是您需要下载的StarTeam SDK才能使用FileUtils#isBinary方法。

安装完成后,您只需添加:

import com.starbase.util.FileUtils;

但是,如果您不想使用第三方SDK,请告诉我们isBinary对您有何帮助,我们可以找到标准的Java等价物。

另外要澄清的是,import.java.lang.Object.com.starbase.util.FileUtils不是有效的导入,而是将两个不同的包连接在一起。

必须是import java.lang.Objectimport com.starbase.util.FileUtils

答案 2 :(得分:1)

您永远不必导入java.lang.Object,它是隐式导入的,并且是每个其他类派生自的类。当您导入另一个类时,您可以根据它所在的包导入它。因此,对于您要使用的类,它将是:

import com.starbase.util.FileUtils;

答案 3 :(得分:0)

完全琐碎,也许最容易但非常不可靠!

if( filename.toLowerCase().trim().endsWith(".bin"))
     return "Binary";