如何使用datainput流从文件中读取字节数组,并在java中打印字节数组

时间:2014-11-06 13:43:37

标签: java arrays datainputstream

我已经将一个字节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中的内容存储到数组中。

请帮助解决此问题

1 个答案:

答案 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 它只是给对象的名称,但两者的值相同。