繁体   English   中英

java 数组字节文件到人类可读

[英]java array byte file to human readable

我有一个字节数组文件,我正在尝试将其转换为人类可读的。 我尝试了以下方法:

public static void main(String args[]) throws IOException
        {
            //System.out.println("Platform Encoding : " + System.getProperty("file.encoding")); 
            FileInputStream fis = new FileInputStream("<Path>"); 
            // Using Apache Commons IOUtils to read file into byte array 
            byte[] filedata = IOUtils.toByteArray(fis); 
            String str = new String(filedata, "UTF-8"); 
            System.out.println(str); 
            }

另一种方法:

public static void main(String[] args) {
        File file = new File("<Path>");
        readContentIntoByteArray(file);
    }
    private static byte[] readContentIntoByteArray(File file) {
        FileInputStream fileInputStream = null;
        byte[] bFile = new byte[(int) file.length()];
        try {
            FileInputStream(file);
            fileInputStream.read(bFile);
            fileInputStream.close();
            for (int i = 0; i < bFile.length; i++) {
                System.out.print((char) bFile[i]);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return bFile;
    }

这些代码正在编译,但没有以人类可读的方式生成 output 文件。 如果这是一个重复的或基本的问题,请原谅。

有人可以纠正我这里哪里出错了吗?

您用于将字节文件解码为 UTF-8 文本文件的代码(来自第一个片段)对我来说看起来是正确的(假设 FileInputStream fis = new FileInputStream("Path") 产生正确的 fileInputStream)。

如果您希望使用文本文件格式,但不确定文件格式采用哪种编码(可能不是 UTF-8),您可以使用如下所示的库来查找。

https://code.google.com/archive/p/juniversalchardet/

或者只是探索 Charset 库中的一些不同的字符集,看看它们在你的字符串初始化行中产生了什么以及你产生了什么:

new String(byteArray, Charset.defaultCharset()) // try other Charsets here.

您展示的第二种方法将捕获与字节到字符转换相关联,具体取决于字符,如此处所讨论的( Java 中的字节和字符转换)。 很有可能,如果您找不到此文件的有效编码,则在字节转换之前,它一开始就不是人类可读的,或者传递给您的字节数组文件丢失了一些使其在此过程中可解码的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM