我想用Java讀取二進制文件。我知道該文件包含一系列數據結構,如:ANSI ASCII字節字符串,Integer,ANSI ASCII字節字符串。即使假設數據結構的數量已知(N),我如何讀取和獲取文件的數據?我看到接口DataInput有一個讀取字符串的方法readUTF(),但它使用UTF-8格式。我們如何處理ASCII碼的情況?閱讀結構化二進制文件
0
A
回答
0
最靈活(高效的)的做法,我認爲是:
- 打開
FileInputStream
。 - 使用流的
getChannel()
方法獲取FileChannel
。 - 使用頻道的
map()
方法將頻道映射到MappedByteBuffer
。 - 通過緩衝區的各種
get*
方法訪問數據。
0
嘗試
public static void main(String[] args) throws Exception {
int n = 10;
InputStream is = new FileInputStream("bin");
for (int i = 0; i < n; i++) {
String s1 = readAscii(is);
int i1 = readInt(is);
String s2 = readAscii(is);
}
}
static String readAscii(InputStream is) throws IOException, EOFException,
UnsupportedEncodingException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
for (int b; (b = is.read()) != 0;) {
if (b == -1) {
throw new EOFException();
}
out.write(b);
}
return new String(out.toByteArray(), "ASCII");
}
static int readInt(InputStream is) throws IOException {
byte[] buf = new byte[4];
int n = is.read(buf);
if (n < 4) {
throw new EOFException();
}
ByteBuffer bbf = ByteBuffer.wrap(buf);
bbf.order(ByteOrder.LITTLE_ENDIAN);
return bbf.getInt();
}
0
我們如何處理ASCII的情況下?
你可以用readFully()來處理它。
NB readUTF()用於由DataOutput.writeUTF()創建的特定格式,以及我沒有意識到的其他任何內容。
相關問題
- 1. 讀\寫結構化二進制文件
- 2. 閱讀二進制文件
- 3. 閱讀二進制文件
- 4. 閱讀二進制文件
- 5. C++二進制文件讀入結構
- 6. 閱讀Python中的二進制文件到一個結構
- 7. 去 - 閱讀與結構的二進制文件
- 8. 寫一個結構二進制文件和閱讀它
- 9. 討厭的錯誤閱讀結構從二進制文件(C++)
- 10. 閱讀文件的二進制文件
- 11. 文件閱讀:feof()二進制文件
- 12. 閱讀二進制文件Python來Vb.net
- 13. 閱讀二進制文件問題
- 14. 閱讀二進制文件的問題
- 15. 閱讀二進制文件的matlab
- 16. 閱讀PCAP二進制文件到HDFS
- 17. 閱讀DWORD從二進制文件
- 18. 如何閱讀和二進制文件
- 19. 閱讀chunks二進制文件C#
- 20. 閱讀二進制
- 21. 閱讀Java中的結構化文件
- 22. 在VB.Net中讀取DBF文件結構爲二進制文件
- 23. 位閱讀謎題(閱讀C++中的二進制文件)
- 24. 蟒蛇 - 確定字段閱讀二進制文件的結尾
- 25. 在二進制文件中包含結構的一個未知數閱讀(C#)
- 26. 閱讀二進制圖像
- 27. 二進制文件和寫入結構
- 28. 二進制文件的結構?
- 29. C++結構二進制文件
- 30. 在R讀取二進制結構
單純的代碼不是答案。你必須解釋它,並解釋它是如何回答這個問題的。 – EJP