jjzjj

Readline

全部标签

PHP:为 STDIN/单字符处理添加方向键支持

在PHP中,我可以使用以下代码从命令行程序读取输入$stream=STDIN;$test=fgets($stream);echo$test;这适用于简单的输入。但是,如果我尝试使用类似后退箭头键的东西,我的shell将如下所示Thisisatest^[[D^[[D^[[D即^[[D的箭头键转义序列被发送到shell。PHP本身将解释箭头键——即输入这个Thisisatest^[[D^[[D^[[D^[[Dsecondtest会输出这个Thisisasecondtest但是,我希望shell“正确地”(即做我认为他们应该做的,而不是我发送的字面意思)解释箭头键,以便插入点在键入时移动。这

java - 用 jline 预填充一行

使用JLine(或JLine2),是否可以在ConsoleReader上发出对readline的调用,并且除了标准提示之外,缓冲区是预填充了我选择的字符串?我试过,例如:reader.getCursorBuffer().write("Default");reader.readLine("Prompt>");这似乎确实写入了缓冲区,但该行仅显示提示。如果我按回车键,readLine会返回"Default",正如我所期望的那样。如果我清除屏幕,缓冲区将重新绘制并正确显示。我的理解是,我应该以某种方式在调用readLine之后立即调用reader.redrawLine()。然而,最后一个是阻

java - 在 Java 中,为什么 readLine() 会阻塞已关闭的套接字连接?

我有一个简单的客户端/服务器应用程序。服务器设置为如果在N秒内没有数据进入,则会发生超时并关闭套接字连接。我通过Socket.setSoTimeout()执行此操作。如果客户端挂起,一切正常。但是,如果客户端死了(例如,我用Ctrl-C杀死它),那么readLine()永远不会超时。这是服务器代码,如果有区别的话:publicvoidrun(){PrintWriterout=null;BufferedReaderin=null;try{sock.setSoTimeout(10000);out=newPrintWriter(sock.getOutputStream(),true);in=

java - 为 readLine() 设置超时限制?

我有以下代码,通过Java中的套接字从POP服务器读取响应。但问题是有时,当我使用readLine()函数从服务器读取时,如果服务器没有回复任何响应,我的应用程序将卡在那里,等待服务器的响应。socket.connect(newInetSocketAddress("pop.server.com",110),3000);input=socket.getInputStream();BufferedReaderincoming=newBufferedReader(newInputStreamReader(input));incoming.readLine();//Thislinewillca

java - 类似 readline 的 Java 库

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。您使用哪个readline-likeJava库?我所说的像库这样的“readline”是指用于编辑控制台输入的库,支持历史记录、制表符完成和类似的东西。我正在寻找一个,但我无法从这么多选择中进行选择(jLine--未维护,java-readline--2003年的最后一个版本,其他?)

java - 来自标准输入的 BufferedReader readLine()

我需要从标准输入读取。我对BufferedReader不太熟悉,到目前为止只使用过Scanner。扫描仪(或者可能是我的代码中的某些东西)不断给我TLE。现在的问题是BufferedReader似乎跳过了一些行,我不断收到NumberFormatException。这是我的代码:BufferedReaderreader=newBufferedReader(newInputStreamReader(System.in));intcases=Integer.parseInt(reader.readLine());for(inti=0;ipat=newHashSet();for(intj=0

java - BufferedReader.readLine() 等待来自控制台的输入

我正在尝试从控制台读取文本行。行数是事先不知道的。BufferedReader.readLine()方法读取一行,但在最后一行之后等待来自控制台的输入。应该怎么做才能避免这种情况?请看下面的代码片段:publicstaticString[]getLinesFromConsole(){StringstrLine="";try{//GettheobjectofDataInputStreamInputStreamReaderisr=newInputStreamReader(System.in);BufferedReaderbr=newBufferedReader(isr);Stringlin

java - BufferedReader 性能低下

我正在使用BufferReader.readlLine()逐行处理一些文本文件。两个文件大小相同,均为130MB,但处理一个文件需要40秒,而另一个文件需要75秒。我注意到一个文件有180万行,而另一个文件有210万行。但是,当我尝试处理一个包含300万行且大小相同的文件时,我花了30分钟来处理。所以我的问题是:这种行为是因为缓冲区读取器的查找时间(我想知道BufferedReader是如何工作或逐行解析文件的吗?)有什么方法可以更快地逐行读取文件?好的,friend们,我正在提供更多细节。我使用正则表达式将该行分成三部分,然后使用SimpleUnsortedWriter(由Cassa

java - 在 Java 中使用编码和 readLine() 打开文件的最短方法?

打开文件以使用readLine()方法读取并设置其编码的最短方法是什么?下面的行是否正确且最短?BufferedReaderreader=newBufferedReader(newInputStreamReader(newFileInputStream(myPath),myEncoding)); 最佳答案 与Scanner,你可以这样做:Scannerscan=newScanner(newFile(myPath),myEncoding)然后scan.nextLine()返回一个String.

java - 你能用 Future.cancel(true) 中断 BufferedReader.readLine() 吗?

假设我启动了一个线程并且我有这样的东西:...//initiateallthesocketconnectionfuture=executor.submit(newRunnable(){publicvoidrun(){......while((str=in.readLine())!=null){//dosomethinghere}});executor是一个ExecutorService对象,in是一个BufferedReader对象我知道您可以关闭来自不同线程的套接字来中断该线程。但是当我尝试使用future.cancel(true)方法时,即使它返回true,线程似乎仍在运行,有人知