Java “关于InputStream的查询”;系统。在“中”;

Java “关于InputStream的查询”;系统。在“中”;,java,io,nio,bufferedinputstream,Java,Io,Nio,Bufferedinputstream,我希望实现以下目标: BufferedInputStream is = new BufferedInputStream(System.in); int c = 0; while((c=is.read())!=-1) Files.copy(is, path3, StandardCopyOption.REPLACE_EXISTING); 无论它被困在等待系统中,永远。。 有解决办法吗 提前感谢。如果您试图停止阅读新行或回车或流结束,您可以尝试- do

我希望实现以下目标:

BufferedInputStream is = new BufferedInputStream(System.in);
        int c = 0;
        while((c=is.read())!=-1)
        Files.copy(is, path3, StandardCopyOption.REPLACE_EXISTING);
无论它被困在等待系统中,永远。。 有解决办法吗


提前感谢。

如果您试图停止阅读新行或回车或流结束,您可以尝试-

do {

    try {

        c = is.read();

        // Do something

    } catch (IOException e) {

        e.printStackTrace();

    }

} while ((c != -1) & (c != '\n') & (c != '\r'));

它不能在构造函数处阻塞。你是说at
是.read()
?它正在阻止从控制台读取。。您是否键入任何输入?是否在控制台上按了
return
?在此之前,
System.in
看不到任何输入。如果您想在每次按键时做出反应,
System.in
是不可取的。您需要AWT事件。是否在控制台键入ctrl/z或ctrl/d(系统相关)以提供EOS?您的代码在得到一个之前不会终止。然而,您的代码无论如何都没有意义。您正在从System.in读取一个字符,将其丢弃,然后复制整个流,然后重复,直到读取的字符为-1。这里的实际目的是什么?