readline 订阅
readline
信息
操作系统
Linux
开发语言
C/C++
开源协议
GPL
readline
GNU Readline 库提供了一组供应用程序使用的功能,这些功能允许用户在键入命令时编辑命令行。Emacs 和 vi 编辑模式均可用。Readline 库包含其他功能,这些功能可以维护以前输入的命令行的列表,以重新调用并可能重新编辑这些命令行,并对先前的命令执行类似 csh 的历史记录扩展。 历史记录设施也作为构建过程的一部分放置在一个单独的库中,即历史记录库。在需要 Readline 功能的应用程序中,可以不使用 Readline 来使用 History 库。 Readline是大多数 GNU / Linux 和 FreeBSD系统上的标准库 。它也是 NetBSD 软件包 集合和 OpenBSD 软件包 集合的一部分。 或许很多人已经知道 readline,但是总有人不知道。readline 从字面上来理解,就是从“行”上面读取。实际上就是一个行编辑库,bash 在用,mysql 也在用,mutt 也在用。 通过 readline,可以方便的在命令行上面移动,增删,复制,粘贴,搜索。比如: ctrl+r 可以搜索历史命令,很常用的一个 ctrl+a 到行首 ctrl+e 到行尾 ctrl+u 删除到行首 ctrl+k 删除到行尾 ctrl+l 类似 clear 命令效果 ctrl+y 粘贴
收起全文
精华内容
下载资源
问答
  • readline

    2013-02-24 16:29:03
    readline5_5.2
  • readLine

    2019-12-02 16:17:16
    它有一个很特别的方法:readLine(),使用起来特别方便,每次读回来的都是一行,省了很多手动拼接buffer的琐碎; 它比较高效,相对于一个字符/字节地读取、转换、返回来说,它有一个缓冲区,读满缓冲区才返回;一般...

    虽然写IO方面的程序不多,但BufferedReader/BufferedInputStream倒是用过好几次的,原因是:

    它有一个很特别的方法:readLine(),使用起来特别方便,每次读回来的都是一行,省了很多手动拼接buffer的琐碎;
    它比较高效,相对于一个字符/字节地读取、转换、返回来说,它有一个缓冲区,读满缓冲区才返回;一般情况下,都建议使用它们把其它Reader/InputStream包起来,使得读取数据更高效。
    对于文件来说,经常遇到一行一行的,特别相符情景。
    这次是在蓝牙开发时,使用两个蓝牙互相传数据(即一个发一个收),bluecove这个开源组件已经把数据读取都封装成InputStream了,也就相当于平时的IO读取了,很自然就使用起readLine()来了。

    发数据:

    读数据:

    上面是代码的节选,使用这段代码会发现写数据时每次都成功,而读数据侧却一直没有数据输出(除非把流关掉)。经过折腾,原来这里面有几个大问题需要理解:

    误以为readLine()是读取到没有数据时就返回null(因为其它read方法当读到没有数据时返回-1),而实际上readLine()是一个阻塞函数,当没有数据读取时,就一直会阻塞在那,而不是返回null;因为readLine()阻塞后,System.out.println(message)这句根本就不会执行到,所以在接收端就不会有东西输出。要想执行到System.out.println(message),一个办法是发送完数据后就关掉流,这样readLine()结束阻塞状态,而能够得到正确的结果,但显然不能传一行就关一次数据流;另外一个办法是把System.out.println(message)放到while循环体内就可以。
    readLine()只有在数据流发生异常或者另一端被close()掉时,才会返回null值。
    如果不指定buffer大小,则readLine()使用的buffer有8192个字符。在达到buffer大小之前,只有遇到"/r"、"/n"、"/r/n"才会返回。
    readLine()的实质(下面是从JDK源码摘出来的):

    从上面看出,readLine()是调用了read(char[] cbuf, int off, int len) 来读取数据,后面再根据"/r"或"/n"来进行数据处理。

    在Java I/O书上也说了:

    public String readLine() throws IOException
    This method returns a string that contains a line of text from a text file. /r, /n, and /r/n are assumed to be line breaks and are not included in the returned string. This method is often used when reading user input from System.in, since most platforms only send the user’s input to the running program after the user has typed a full line (that is, hit the Return key).
    readLine() has the same problem with line ends that DataInputStream’s readLine() method has; that is, the potential to hang on a lone carriage return that ends the stream . This problem is especially acute on networked connections, where readLine() should never be used.

    小结,使用readLine()一定要注意:

    读入的数据要注意有/r或/n或/r/n
    没有数据时会阻塞,在数据流异常或断开时才会返回null
    使用socket之类的数据流时,要避免使用readLine(),以免为了等待一个换行/回车符而一直阻塞

    展开全文
  • ReadLine

    2016-12-08 10:55:00
    //需求:实现通过ReadLine读取代码,每行加上行号 class BufferedReaderLineNum extends BufferedReader{ int count = 1; //子类继承父类会默认调用父类的无参构造方法 public BufferedReaderLineNum(Reader in){ ...

    //需求:实现通过ReadLine读取代码,每行加上行号

    class BufferedReaderLineNum extends BufferedReader{
    int count = 1;
    //子类继承父类会默认调用父类的无参构造方法
    public BufferedReaderLineNum(Reader in){
    super(in);
    }
    //复写readLine方法
    public String readLine() throws IOException {
    //调用父类的readLine
    String content = super.readLine();
    if(content == null){
    return null;
    }
    content = count+" "+content;
    count++;
    return content;
    }
    }
    public class Demo1 {
    public static void main(String[] args) throws IOException {
    testLineNum();
    }

    public static void testLineNum() throws IOException{
    //1.开启通道,并且带一个文件路径
    FileReader reader = new FileReader("C:\\zmy\\test.txt");
    //2.创建一个缓冲流,带行号
    BufferedReaderLineNum lineNum = new BufferedReaderLineNum(reader);
    //3.开始读取数据
    String content = null;
    while((content = lineNum.readLine()) != null){
    System.out.println(content);
    }
    //4.关闭资源
    lineNum.close();
    }
    }

    转载于:https://www.cnblogs.com/future-zmy/p/6144066.html

    展开全文
  • Readline绑定 这是对GNU Readline库的一组绑定。 如果您可以相信的话,Go的现有readline绑定比该库更受限制。 请注意,String()的返回类型已更改。 它是 func String(prompt string) string 现在 func String...
  • 微小的 C readline 库,注意:这在 CLI-readline 的库中没有使用。 安装 用 git 安装 $ git clone https://github.com/yorkie/readline.git master 用安装 $ clib install clibs/readline 开始 # include " ...
  • readline problems

    2020-11-30 23:12:02
    checking for readline/readline.h... yes checking for readline/history.h... yes checking for readline() in -lreadline... no extconf.rb:51:in `<main>': readline not found (RuntimeError) ...
  • Readline support

    2020-12-09 08:52:04
    <div><p>I was trying to use <code>actions/setup-ruby</code> in a Rails project and was surprised to see that ruby was installed with no readline support. If you use <code>byebug</code> or any other ...
  • rebel-readline:Clojure方言的终端readline
  • import readline

    2020-11-24 13:49:57
    <div><p>Traceback (most recent call last): File "... import readline ModuleNotFoundError: No module named 'readline'</p><p>该提问来源于开源项目:EntySec/ghost</p></div>

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,495
精华内容 10,198
关键字:

readline