我已经将一个字节byte[] testByte; testByte = new byte[]{3,4}
数组存储到一个文件中,现在我需要从文件中读取并将字节数组分配给一个变量并打印出来。
我已完成以下代码,但我无法打印字节数组
public static void main(String[] args) throws IOException {
InputStream is = null;
DataInputStream dis = null;
try{
// create input stream from file input stream
is = new FileInputStream("c:\\test.txt");
// create data input stream
dis = new DataInputStream(is);
// count the available bytes form the input stream
int count = is.available();
// create buffer
byte[] bs = new byte[count];
// read data into buffer
dis.read(bs);
}
现在如何将缓冲区bs中的内容存储到数组中。
请帮助解决此问题
答案 0 :(得分:0)
您可以使用bs
new String
缓冲区的内容
public static void main(String[] args) throws IOException {
InputStream is = null;
DataInputStream dis = null;
int count = 0;
byte[] bs = null;
String content = "";
try{
is = new FileInputStream("C:\\test.txt");
dis = new DataInputStream(is);
count = is.available();
bs = new byte[count];
dis.read(bs);
// here is a variable that contains the buffer content as a String
content = new String(bs);
} catch (IOException e) {
} finally {
is.close();
dis.close();
}
System.out.println(content);
}
编辑(评论回答):
好吧,当我们创建new String()
时,我们实例化一个具有byte[]
值的新String。
但是,由于您已经有一个字节数组,因此您可以使用以下命令再次将String对象的值存储在其中:
bs = content.getBytes();
事先,不要担心字节的打印是否不同,例如 [B @ 199c55a [B @ faa824 它只是给对象的名称,但两者的值相同。