我使用class 6 randomAccessFile中的java 6方法readByte()讀取linux x64上的文本文件。在x32或x64上使用java randomAccessFile讀取相同的行爲?
我通過在年底發現
"0xD" or "0xA"
尋找文本行的末尾。
我的問題是:如果操作系統將切換到x32,發現仍然工作?
也許更能找到文本行的結束字符,如
"\n"
,而不是字節?
我使用class 6 randomAccessFile中的java 6方法readByte()讀取linux x64上的文本文件。在x32或x64上使用java randomAccessFile讀取相同的行爲?
我通過在年底發現
"0xD" or "0xA"
尋找文本行的末尾。
我的問題是:如果操作系統將切換到x32,發現仍然工作?
也許更能找到文本行的結束字符,如
"\n"
,而不是字節?
無論您使用64位JVM還是32位JVM,文件的內容都不會更改,因此您正在尋找相同的內容。 RandomAccessFile專爲二進制文件而設計,因此您只能讀取字節,而不能讀取字符。你必須做從字節到字符的翻譯。
簡而言之,無論在哪種情況下都讀取相同的字節,並且談論字符只是關於如何將它們視爲字符,只有字節纔有意義。
感謝您的快速回答,問題是如果在x32上的字節大小與x64相同?所以當JVM發生變化時,我可以安全地在行尾找到「0xD」和「0xA」?並且我的代碼根據需要工作 – Toren
@Toren一個字節在機器級別上始終是一個字節。即使不是,Java定義了一個字節始終是一個有符號的8位值。例如即使在64位JVM上,「int」也始終是32位的。 –
在x86或x64上的Java中* everything *的相同行爲,JNI庫除外。 – EJP