2012-12-13 254 views
0

我在Java新....我試圖讀取使用文件輸入流的文本文件。我正在逐行讀取文本並設置爲一個字符串..現在我想將字符串轉換爲字節。但我得到一個數字格式異常..請幫助我解決這個問題。字符串到字節轉換在java

FileInputStream fstream = new FileInputStream("C:/Users/data.txt"); 

      DataInputStream in = new DataInputStream(fstream); 
      BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
      byte[] bytes = null; 
      String str; 
      int i=0; 

      while ((str = br.readLine()) != null) 
      { 

       bytes[i] = Byte.parseByte(str,16); 
       i++; 
      } 

      in.close(); 
+1

請確保您的'str'包含可以解析爲字節的值。例如,你當然不能將「abc」解析爲字節值嗎?爲此,您需要使用 - '「abc」.getBytes()' –

+2

您是否需要實際的二維字節數組?或者你會使用每個字符串臨時字節數組? –

+0

請不要使用DataInputStream來閱讀文本http://vanillajava.blogspot.co.uk/2012/08/java-memes-which-refuse-to-die.html –

回答

2

嘗試

byte[] bytes = str.getBytes(); 

,而不是

bytes[i] = Byte.parseByte(str,16); 

此外,我建議對InputStreamReader的指定編碼:

BufferedReader br = new BufferedReader(new InputStreamReader(in, "UTF-8")); 

請記住,Java的字符串長度和內部表徵的N將不會是相同的,以C.

+0

我試過這個。我想將相應字符串的每個字節值存儲在字節數組中。這隻存儲單個字符串的值。 –

+0

@SachinKS,所以當你在這裏提出問題時你必須更具體。看,我已經問了37分鐘前的問題評論 –

+0

對不便帶來的不便... –

1

您可以只需要使用getBytes()方法從String類:

str.getBytes() 

或者,如果你不使用默認的字符集:

str.getBytes(myCharSet); 
0

你可以使用,

str.getBytes()它會將字符串轉換爲字節數組。

0

你可以試試這段代碼。

fstream = new FileInputStream("C:/Users/s.hussain/Desktop/test3.txt"); 


      DataInputStream in = new DataInputStream(fstream); 
      BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
      byte[] bytes = null; 
      String str; 
      int i=0; 

      while ((str = br.readLine()) != null) 
      { 

       bytes = str.getBytes(); 
       i++; 
       System.out.println(bytes.length); 
      } 

      in.close(); 
+0

實際上,我的字符串值採用十六進制格式,如0 0 e4 8 d。每行都有數字。 –

+0

請給任何樣本行解析。 –

+0

請不要使用DataInputStream來閱讀文本http://vanillajava.blogspot.co.uk/2012/08/java-memes-which-refuse-to-die.html –