2012-12-13 116 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 –