java 中readline

article/2025/9/22 12:03:08

https://www.cnblogs.com/dongrilaoxiao/p/6688107.html

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

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

常见问题
服务器端使用readline接收不到客户端数据
原因:

1.原来readLine()方法在进行读取一行时,只有遇到回车(\r)或者换行符(\n)才会返回读取结果,这就是“读取一行的意思”,重要的是readLine()返回的读取内容中并不包含换行符或者回车符;

2.由于在客户端使用的readLine()来读取用户输入,所以当用户按下回车键是,readLine() 返回读取内容,但此时返回的内容并不包含换行符(查看readLine()源码,会将\r,\n或者\r\n去除掉),而当在服务器端用readLine()再次读取时,由于读取的内容没有换行符,所以readLine()方法会一直阻塞等待换行符,这就是服务器端没有输出的原因。
解决办法:
在这里插入图片描述

注意:

1、误以为readLine()是读取到没有数据时就返回null(因为其它read方法当读到没有数据时返回-1),而实际上readLine()是一个阻塞函数,当没有数据读取时,就一直会阻塞在那,而不是返回null。没有数据时会阻塞,在数据流异常或断开时才会返回null

2、readLine()只有在数据流发生异常或者另一端被close()掉时,才会返回null值。
如果不指定buffer大小,则readLine()使用的buffer有8192个字符。在达到buffer大小之前,只有遇到"/r"、"/n"、"/r/n"才会返回。
3、使用socket之类的数据流时,要避免使用readLine(),以免为了等待一个换行/回车符而一直阻塞

参考链接:
https://www.cnblogs.com/jpfss/p/9789793.html


http://chatgpt.dhexx.cn/article/xvidB2OZ.shtml

相关文章

Python中read()、readline()和readlines()的用法简单案例

首先我们先建立一个测试文件,test.txt 1.read() 用法: 从文件当前位置起读取size个字节,若无参数size,则表示读取至文件结束为止,它范围为字符串对象。 # 打开含中文的文本 fileopen("test.txt",encodingu…

readline库的简单使用

readline库的简单使用 这周要实现一个简单的 shell, 平时使用bash, zsh这些shell的时候, 如果文件名或命令太长,又或者要频繁执行几条命令的话,最常用的应该就是tab键补全和上下键切换历史命令了。 想要在自己的shell里面实现这两个功能很困难&#xf…

readlines()的使用与readline()的使用

readlines()的使用 readlines可以按照行的方式把整个文件中的内容进行一次性读取 ,并且返回的是一个列表,其中每一行的数据为一个元素。 fopen("text.text",r) af.readlines() print(a) f.close()** 输出的结果是 [“aaa\n”,“bbb”] 因…

Python文件操作----Read()、Readline()与Readlines()详解

前言:在上一篇博文中,我们主讲了文件的操作模式,主讲了写入数据的形式,但是没有讲到如何对文件的数据进行读取,那么本博文主针对读取数据的两种方法来进行细谈。(上一篇博文友情链接python文件操作) 文章目录: 一:Read()方法:1.无参数读取:2.有参数进行读取: 二.Readline()方法…

python:read()/readline()/readlines()区别

在我们使用python打开或者读取txt文件时,我们经常会用到read()/readline()/readlines()三种方法,首先我们贴出结论,即三种方法的异同。 方法类型返回文本read()str以原格式返回全部文本readline()str只返回第一行文本readlines()list以列表的…

python readline()和readlines()

文件对象的方法 描述 fp.readline() 从文件中读取一行内容,并以此作为一个 字符串返回 fp.readlines() 将文件中的每行内容作为一个字符串存入 列表中,并返回该列表 注意事项: readline()和readlines(),都是从当前位置进行读取&am…

f.readline()和f.readline()和f.read()

一、操作文件 [rootnode6 ~]# cat cs.txt 12 13 14 aa bb vv15 cc 16二、f.readline() 整行读取,每次一行,空行也会当做一行读取。 因为文本带了一个 ‘\n’ 了,print 默认也是 ‘\n’,所以读取每一行都会多打印一个空行 [root…

readlines和readline

readlines和readline python之readlines和readline的区别1.txtreadlinesreadline 很久很久没写博客了,这真的是一个很不好的习惯,因为遇到了很多很多说需要技术文章的。。。。 python之readlines和readline的区别 很久很久没有写py脚本了,今…

python中read、readline和readlines的区别

python中有神奇的三种读操作:read、readline和readlines read() : 一次性读取整个文件内容。推荐使用read(size)方法,size越大运行时间越长 readline() :每次读取一行内容。内存不够时使用,一般不太用 readlines(…

read(),readline(),readlines()的区别

这三个方法偶尔会混淆,直接做个记录。 自己随便写了个txt文件: 1、read() read()方法会直接读取整个文本的内容,并将它们保存在字符串变量。 f open(D:\Procedure\pycharm\python\op.txt,)print(f.read()) print(type(f.read())) 2、readl…

关于readline ,readlines, for循环读取文件内容

1、readlines: readlines() 用于一次性读取所有行,然后将它们作为列表中的字符串元素作为每一行返回。 此函数可用于小文件,因为它将整个文件内容读取到内存中,然后将其拆分为单独的行。 我们可以遍历列表并使用 strip() 函数去除换行符“\n”…

Node.js学习六(readline)

文章目录 一、什么是readline二、如何使用readline1、Interface类2、close事件3、readline.createInterface(options) 三、实例:输入输出四、示例:模拟命令行的输入输出 一、什么是readline readline是Node.js里实现标准输入输出的封装好的模块&#xff…

java以前版本下载方式

java以前版本下载 1.创建Oracle账号 2.网址https://www.oracle.com/java/technologies/downloads/archive/

java -version

一、JDK下载 1.官网下载 点击官网下载地址 往下划,找到自己电脑相对应的JDK,点击下载。 二、安装步骤 初学者建议傻瓜式安装,直接点击下一步即可。 三、搭配环境变量 1.Path变量 解决方法:配置Path变量。 右键点击“此电脑”&…

最全的Java版本历史

JDK 1.0(1996) Sun公司发布Java1.0,发布初期叫Oak,后改名为Java(JDK1.0基本上只支持Java语言基础特性) JDK 1.1(1997) 引入内部类引入JDBC: 是Java语言中用来规范客户…

JDK各个版本的区别

jdk1.5的新特性&#xff1a; 1. 泛型 ArrayList listnew ArrayList()------>ArrayList<Integer>listnew ArrayList<Integer>(); 2 自动装箱/拆箱 nt ilist.get(0).parseInt();-------->int ilist.get(0);原始类型与对应的包装类不用显式转换 3 for-eac…

Java 版本区分

Java分为如下三个版本&#xff1a; Java SE&#xff1a;Standard Edition&#xff1a; Java SE就是标准版&#xff0c;包含标准的JVM和标准库。 Java EE&#xff1a;Enterprise Edition 而Java EE是企业版&#xff0c;它只是在Java SE的基础上加上了大量的API和库&#xff0c;…

更换Java版本

当windows系统中存在多个java版本时&#xff0c;怎么切换&#xff1f; 如果是1.7以前的版本&#xff0c;则直接修改环境变量JAVA_HOME&#xff1b; 如果是1.7及以后的&#xff0c;则可能要修改C:\ProgramData\Oracle\Java\javapath 中的三个java&#xff0c;可重命名&#xff…

JAVA版本号的问题 Java版本号与JDK版本

初学Java时便一直疑惑Java版本号到底是如何命名的&#xff1f;时常在网上看到Java5、Java6、Java7、Java8 (到今天已经到了Java12了&#xff0c;2019.4.5) 这一类 “Java X” 的Java版本名称&#xff0c;同时又会看到诸如JDK1.5、JDK1.6这中 “JDK1.X” 的JDK叫法。一直以来都在…

查看java/jdk版本

查看当前电脑的Java/JDK版本的方法 1.winR 打开运行窗口&#xff0c;输入 cmd 2.在控制台中输入java --version或者java -version&#xff0c;即可查看Java版本号 Java所有版本 版本号发布日期JDK Version 1.01996-01-23 Oak(橡树)JDK Version 1.11997-02-19JDK Version …