2013-03-13 103 views
0

我在做一個項目,我的代碼必須是最有效的,我需要從文件中讀取ASCII碼字符和整數。問題(我認爲)是,當我讀取字符時,它讀取UTF8,因爲它只讀取它應該的一半時間。從文件(java)讀取ascii字符和整數

我試過用DataInputStream,但它不起作用。此外,我檢查了RandomAccessFile,但它讀取UTF8。當我嘗試讀取兩個字節並將它們轉換爲char時,Scanner會拋出InputMismatchException。

這是唯一的選擇是用手做這個嗎?

在此先感謝

+0

只是爲了驗證,您選擇的語言被強制爲Java,是正確的? Java通常不是高效操作的選擇語言。 – BlackVegetable 2013-03-13 19:05:35

+0

只有一次,我想看到有人說他們的代碼必須是其他人最容易理解的。 – 2013-03-13 19:14:04

+0

查看接受的答案在這裏:http://stackoverflow.com/questions/93423/java-reading-an-ascii-file-with-filechannel-and-bytearrays訣竅是CharacterSet。 – Gus 2013-03-13 19:21:09

回答

3

一次讀取一個字節。這將是你想要的價值。例如,用RandomAccessFileread()方法:

read()從該文件讀取一個字節的數據。該字節返回爲 整數,範圍爲0到255(0x00-0x0ff)。如果還沒有 輸入可用,則此方法會阻止。

例子:

int asciiValue randomAccessFile.read();

然後你就可以投ìntchar

char character = (char) asciiValue;

+0

是的,我會用帶有緩衝區的DataInputStream來做,因爲我需要高效。謝謝。 – Camandros 2013-03-14 11:36:07

0

我發現了什麼問題。問題是,當你使用BufferedWriter編寫字符和整數時,它會將所有字符都轉換爲char,這使得直接從文件讀取int類型成爲不可能。我會嘗試用DataOutputStream編寫,使用方法來直接編寫整數和字符。