【发布时间】:2016-10-12 01:03:39
【问题描述】:
我正在尝试访问 InputStreamReader 的底层 InputStream,但即使有数据它也只会阻塞,当我使用 InputStream 而没有它读取的 InputStreamReader 时,当我将 InputStreamReader 添加到 InputStream 时,我不能再使用底层 InputStream 或它会阻塞。
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();
}
如果我使用 InputStreamReader 再读取一行,它读取正常,但如果我尝试使用 InputStream 读取 1 个字节,它会阻塞。
【问题讨论】: