0

我是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();
4

4 回答 4

2

尝试

byte[] bytes = str.getBytes();

代替

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

我还建议为 InputStreamReader 指定编码:

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

请记住,Java 字符串长度和内部表示与 C 不同。

于 2012-12-13T05:48:43.170 回答
1

您可以简单地使用 String 类中的 getBytes() 方法:

str.getBytes()

或者,如果您不使用默认字符集:

str.getBytes(myCharSet);
于 2012-12-13T05:50:15.017 回答
0

您可以使用,

str.getBytes()将字符串转换为字节数组。

于 2012-12-13T05:57:29.003 回答
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();
于 2012-12-13T06:00:19.203 回答