在InputStream我的Process应该安装和拆卸每当用户希望看到这一点.附着工作正常,但分离失败.中断该readLine()方法的默认答案始终是关闭流,但我不能在这种情况下或Process将完成或至少不可用于将来的附件.这是流的读取方式:
BufferedReader reader = new BufferedReader(new InputStreamReader(getProcess().getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
Run Code Online (Sandbox Code Playgroud)
为了分离,我尝试了一些东西:
SequenceInputStream,失败:当一个人InputStream在等待输入时,另一个甚至没有被调用使用反射解锁read()任何流内的方法,失败:不确定原因,但没有工作.我们应该继续这个尝试吗?这是源代码:
try {
Field modifiers = Field.class.getDeclaredField("modifiers");
modifiers.setAccessible(true);
Field fdecoder = stream.getClass().getDeclaredField("sd");
fdecoder.setAccessible(true);
modifiers.setInt(fdecoder, 1);
StreamDecoder decoder = (StreamDecoder) fdecoder.get(stream);
Field flock = decoder.getClass().getSuperclass().getDeclaredField("lock");
flock.setAccessible(true);
modifiers.setInt(flock, 1);
Object lock = (Object) flock.get(decoder);
synchronized (lock) {
lock.notifyAll();
}
} catch (NoSuchFieldException | IllegalAccessException e) …Run Code Online (Sandbox Code Playgroud)