标签: bufferedreader

套接字:BufferedReader readLine()块

我正在使用BufferedReader.readLine()方法从远程服务器读取响应(用C语言编写,我无法访问源代码).

BufferedReader br = new BufferedReader(new InputStreamReader(in));
String line;
while((line = br.readLine())!=null){
    [...]
}
Run Code Online (Sandbox Code Playgroud)

但它总是阻塞在最后一行,直到它超时.所以我使用了以下代码:

int b;
while(true){
   b = in.read;
   [...]
}
Run Code Online (Sandbox Code Playgroud)

我发现读取的最后一个字节的整数值为13,我认为这是一个回车,对吧?

那么为什么readLine方法会阻塞?服务器通常如何发出信号流结束信号?谢谢.

java sockets bufferedreader java-io

12
推荐指数
1
解决办法
2万
查看次数

使用BufferedReader读取资源

我正在尝试读取将包含在.JAR中的资源,但我得到以下的nullPointer:

bReader = new BufferedReader(new InputStreamReader(
                  this.getClass().getResourceAsStream("resources/" + fileName)));
Run Code Online (Sandbox Code Playgroud)

然而,使用文件,工作正常..

bReader = new BufferedReader(new FileReader(new File("resources/" + fileName)));
Run Code Online (Sandbox Code Playgroud)

java resources jar bufferedreader

12
推荐指数
1
解决办法
3万
查看次数

缓冲读卡器与文件读取器和扫描仪类之间的区别

任何人都可以解释我的类之间的区别BufferedReader,FileReader以及Scanner?当我想阅读文本文件时使用哪一个?

java filereader bufferedreader java.util.scanner

12
推荐指数
1
解决办法
3万
查看次数

BufferedReader.readLine阻止我的程序,但BufferedReader.read()正确读取

我有一个片段如下:

Process proc = Runtime.getRuntime().exec(command);
BufferedReader br = new BufferedReader(new InputStreamReader(proc.getErrorStream()));
String line = br.readLine();
Run Code Online (Sandbox Code Playgroud)

现在在上面的代码中我确信该进程将始终具有在线输入,因此我没有使用任何类型的while循环或任何空检查.问题是readLine块.我知道的一个原因是,流没有数据要读取,因此readLine一直在等待.为了检查这一点,我删除了readLine并使用了read()函数,如下所示:

Process proc = Runtime.getRuntime().exec( command );
BufferedReader br = new BufferedReader(new InputStreamReader(proc.getErrorStream()));
int a;
while((a=br.read())!=-1){
    char ch = (char) a;
    if(ch == '\n')
        System.out.print("New line "+ch);
    if(ch == '\r')
        System.out.print("Carriage return "+ch);
    System.out.print(ch);
}
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,这段代码工作并打印出麻烦的新行和回车.现在我想知道为什么readLine块?数据可用,它由换行符终止.还有什么可能的原因?

注意:以上工作偶尔一次!也许一次超过15次.
注意:我也尝试使用ProcessBuilder,但行为相同.

更新:所以我切换到ProcessBuilder,然后我重定向了errorStream,现在当我执行process.getInputStream时,我立刻得到输入流和错误流,这很好.以下是片段.

ProcessBuilder pb = new ProcessBuilder(command.split(" "));
pb..redirectErrorStream(true);
Process proc = pb.start();
BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line = br.readLine();
//Now I get both input …
Run Code Online (Sandbox Code Playgroud)

java bufferedreader

12
推荐指数
1
解决办法
1730
查看次数

java.io.Buffer*流如何与普通流不同?

1)缓冲流如何在后台工作,它们与普通流有什么不同?使用它们的优点是什么?

2)DataInputStream也是以字节为基础的.但它有方法readLine().这里有什么意义?

java stream bufferedinputstream bufferedreader java-io

11
推荐指数
3
解决办法
7532
查看次数

如何制作BufferedReader的副本?

我正在使用BufferedReader构造函数来创建现有的新副本BufferedReader.

BufferedReader buffReader = new BufferedReader(originalBuffReader);
Run Code Online (Sandbox Code Playgroud)

buffReader的工作正常,但是当我这样做时,originalBuffReader.readLine()它给了我null.有没有其他方法我可以在bufferReader不影响我原创的情况下制作新作品BufferedReader.

仅供参考:我将bufferReader作为我方法的输入; 而我无权访问该来源.

java io bufferedreader

11
推荐指数
1
解决办法
1万
查看次数

Python编写二进制文件,字节

Python 3.我正在使用QT的文件对话框小部件来保存从互联网下载的PDF.我一直在使用'open'读取文件,并尝试使用文件对话框小部件来编写它.但是,我一直遇到"TypeError:'_ io.BufferedReader'不支持缓冲区接口"错误.

示例代码:

with open('file_to_read.pdf', 'rb') as f1: 
    with open('file_to_save.pdf', 'wb') as f2:
        f2.write(f1)
Run Code Online (Sandbox Code Playgroud)

当不使用'b'指示符时,或者当从web读取文件时,这种逻辑适用于文本文件,例如urllib或者请求.这些是"字节"类型,我认为我需要打开文件.相反,它作为缓冲读者开放.我尝试了字节(f1),但得到"TypeError:'bytes'对象不能被解释为整数." 有什么想法吗?

python io buffer bufferedreader python-3.x

11
推荐指数
3
解决办法
4万
查看次数

使用BufferedReader读取行并检查文件结尾

如果我的代码中有这样的东西:

String line = r.readLine();  //Where r is a bufferedReader
Run Code Online (Sandbox Code Playgroud)

如果下一行是文件的结尾,我该如何避免崩溃?(即null)

我需要阅读下一行,因为可能有一些我需要处理的东西,但如果没有代码只是崩溃.

如果有什么东西那么一切都没问题,但我无法保证那里会有东西.

所以,如果我做了类似的事情:(伪代码):

if (r.readLine is null)
//End code

else {check line again and excecute code depending on what the next line is}
Run Code Online (Sandbox Code Playgroud)

我遇到类似这样的问题是,当我检查该行反对null时,它已经移动到下一行,所以我该如何再次检查它?

我没有找到办法做到这一点 - 任何建议都会有很大的帮助.

java file-io readline bufferedreader

11
推荐指数
3
解决办法
6万
查看次数

获取BufferedReader中read()返回的字符

我怎么可以转换返回一个整数read()BufferedReader实际字符值,然后将其添加到一个字符串?将read()返回一个代表字读整数.当我这样做时,它不会将实际字符附加到String中.相反,它将整数表示本身附加到String.

int c;
String result = "";

while ((c = bufferedReader.read()) != -1) {
    //Since c is an integer, how can I get the value read by incoming.read() from here?
    response += c;   //This appends the integer read from incoming.read() to the String. I wanted the character read, not the integer representation
}
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能读取实际数据?

java bufferedreader

10
推荐指数
2
解决办法
4万
查看次数

BufferedReader默认缓冲区大小?

根据文档,BufferedReader(Reader)使用默认缓冲区大小,而第二个构造函数BufferedReader(Reader, int)允许设置缓冲区大小.

public BufferedReader(Reader in)

创建使用默认大小的输入缓冲区的缓冲字符输入流.

但是,文档并未提及默认缓冲区大小.

BufferedReader的默认缓冲区大小是多少?

java buffer bufferedreader

10
推荐指数
1
解决办法
2万
查看次数