Ada*_*ler 1 java bufferedreader
我之前试过问过这个问题,但我的问题并不清楚.Java BufferedReader对字符的操作?
这是我的问题..我有一个BufferedReader设置为从设备读取.它阅读得很好.我把它设置为
if (Status.reader.ready()) {
Lines = Status.reader.readLine();
}
if (Lines.contains(">")) {
log.level1("ready to send data")
}
Run Code Online (Sandbox Code Playgroud)
在>我向设备发送更多数据之前,缓冲读卡器不会报告.问题是,当读者包含>它时,它没有报告准备就绪.它保持>直到我输入更多数据.
我尝试了以下内容,它什么也没有返回.它甚至没有返回log.level0()
Lines = ""
try {
Lines = Status.reader.readLine();
} catch (IOException e) {
Log.level0("Attempted to read blank line");
}
Run Code Online (Sandbox Code Playgroud)
这是发送的实际数据:
^M^M01 02 F3^M00 01 F3 3E^M>
Run Code Online (Sandbox Code Playgroud)
但是BufferedReader会忽略>直到发送更多数据,然后得到如下结果:
>0102
Run Code Online (Sandbox Code Playgroud)
当我从命令提示符检查设备的实际数据时,它返回我所期望的,>它存在.
BufferedReader不会给我的>.有什么方法我可以检查这个char否则?
该BufferedReader.readLine()方法一次读取一行数据.也就是说,它将尝试读取字符,直到它看到行尾序列(例如"\n","\ r"或"\ r \n")或流的结尾.
如果您的输入数据不是面向行的,那么您不应该使用readLine()它来读取它.我建议你做自己的记录/消息提取; 例如
BufferedReader br = ...
StringBuilder sb = new StringBuilder(...);
int ch = br.read();
while (ch != -1 && ch != '>') {
sb.append((char) ch);
ch = br.read();
}
String record = sb.toString();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
776 次 |
| 最近记录: |