Ich versuche auf den zugrunde liegenden InputStream des InputStreamReader zugreifen, aber es blockiert nur, obwohl es Daten gibt, wenn ich InputStream ohne InputStreamReader lesen, wenn ich InputStreamReader zu InputStream hinzufügen, kann ich Verwenden Sie nicht mehr den zugrunde liegenden InputStream oder es wird blockiert.Java InputStream blockiert nur wenn verwendet InputStreamReader
InputStream in = socket.getInputStream();
OutputStream theOutput = socket.getOutputStream();
BufferedReader br = new BufferedReader(
new InputStreamReader(in, StandardCharsets.US_ASCII));
String line = br.readLine();
System.out.println(line);
if(line.equals(Operation_Map_Upload)){
String MapName = br.readLine();
System.out.println(MapName);
String MapMaker = br.readLine();
System.out.println(MapMaker);
String MapData = br.readLine();
System.out.println(MapData);
int ThumbnailSize = Integer.parseInt(br.readLine());
System.out.println(ThumbnailSize);
byte[] Thumbnail = new byte[ThumbnailSize];
in.read(Thumbnail, 0, ThumbnailSize); // <---block here
int MapID = SaveMap(MapName, MapMaker, MapData, Thumbnail);
theOutput.write(("Success;" + MapID).getBytes(StandardCharsets.US_ASCII));
theOutput.flush();
}
Wenn ich lese eine weitere Zeile mit Input es ok liest, aber wenn stattdessen ich versuche 1 Byte mit Input lesen wird es blockieren.
Was schlagen Sie vor, anstatt einen InputStreamReader zu verwenden? – neutralh
Ich denke, ich werde das http://stackoverflow.com/a/25341618/6562678 verwenden – neutralh