[英]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.