2017-06-08 22 views
0

getBytes()メソッドを呼び出すことによってInputStream内のバイト配列データを取得しようとしていますが、コンソールに何も表示されません。その数は、どのようにして得られますか?9. InputStreamのバイトをどのように出力できますか?行のInputStreamからバイト配列を取得

import java.io.ByteArrayInputStream; 
import java.io.ByteArrayOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.net.ServerSocket; 
import java.net.Socket; 


public class Test { 

    public static void main(String args[]) throws Exception { 
     InputStream inputStream = null; 
     ServerSocket serverSocket = new ServerSocket(27015); 
     while (true) { 
      Socket clientSocket = serverSocket.accept(); 
      inputStream = clientSocket.getInputStream(); 
      byte[] temp = new byte[512]; 
      int count = inputStream.read(temp); // here I am getting 9 
      byte[] byteData = Test.getBytes(inputStream); // byteData is here empty. 
      System.out.println("byteData: " + byteData); 

     } 
    } 


    public static byte[] getBytes(InputStream is) throws IOException { 

     int len; 
     int size = 512; 
     byte[] buf; 

     if (is instanceof ByteArrayInputStream) { 
      size = is.available(); 
      buf = new byte[size]; 
      len = is.read(buf, 0, size); 
     } else { 
      ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
      buf = new byte[size]; 
      while ((len = is.read(buf, 0, size)) != -1) { 
       bos.write(buf, 0, len); 
      } 
      buf = bos.toByteArray(); 
     } 
     return buf; 
    } 

} 

答えて

2

:あなたは最後までalredyファイルを読んだ

int count = inputStream.read(temp); // here I am getting 9 

のでライン:

 byte[] byteData = Test.getBytes(inputStream); // byteData is here empty. 

を読むには何もしています。

したがって、最初の行を削除し、配列の長さを入力ストリームのバイト数として取る必要があります

関連する問題