标签: bufferedreader

为什么在这种情况下使用BufferedReader?

在以下代码中使用StringReader周围的BufferedReader与仅使用StringReader之间有什么区别?通过在两个示例的第2行中加载DOM,似乎没有必要使用BufferedReader?

    InputSource is = new InputSource(new StringReader(html));
    Document dom = XMLResource.load(is).getDocument();
Run Code Online (Sandbox Code Playgroud)

VS

    InputSource is = new InputSource(new BufferedReader(new StringReader(html)));
    Document dom = XMLResource.load(is).getDocument();
Run Code Online (Sandbox Code Playgroud)

java xml bufferedreader

6
推荐指数
1
解决办法
6822
查看次数

以多种格式从InputStream读取

我正在尝试编写一个读取HTTP请求和响应并解析它们的类.由于标题是普通文本,因此使用BufferedReaderreadLine方法读取它们似乎最容易.这显然不会对数据体造成影响,因为它可能是二进制的,所以我想在读取头文件后切换到读取原始字节.

现在,我正在做这样的事情:

InputStream input=socket.getInputStream();
BufferedReader reader=new BufferedReader(new InputStreamReader(input));
BufferedInputStream binstream=new BufferedInputStream(input);
Run Code Online (Sandbox Code Playgroud)

问题是BufferedReader在我有机会用binstream获取它之前正在预读并吞噬流中的所有二进制数据.

有没有办法阻止它在每次调用readLine时超出换行符读取?或者是否有更好的方法来读取原始二进制数据后的单行ASCII文本?

java http inputstream bufferedreader

6
推荐指数
2
解决办法
1766
查看次数

BufferedReader的低性能

我正在逐行处理一些文本文件BufferReader.readlLine().

两个文件具有相同的大小130MB,但一个需要40秒才能处理,而其他文件需要75秒.

我注意到一个文件有180万行,而其他文件有210万行.但是,当我尝试处理具有相同大小的300万行的文件时,需要30分钟来处理.

所以我的问题是:

  1. 这种行为是因为寻求缓冲区读取器的时间(我想知道如何BufferedReader逐行工作或解析文件?)

  2. 有没有什么方法可以更快地逐行读取文件?

好的朋友,我提供更多细节.

我正在使用正则表达式将该行拆分为三个部分,然后使用SimpleUnsortedWriter(由Cassandra提供)我将其作为键,列和值写入某个文件.处理完16MB数据后,它会刷新到磁盘.

但是处理逻辑对于所有文件都是相同的,甚至一个大小为330MB的文件,但是在30秒内没有大约100万行的处理逻辑.可能是什么原因?

deviceWriter = new SSTableSimpleUnsortedWriter(
        directory,
        keyspace,
        "Devices",
        UTF8Type.instance,
        null,
        16);

Pattern pattern = Pattern.compile("[\\[,\\]]");
while ((line = br.readLine()) != null)          
{
    //split the line i n row column and value
    long timestamp = System.currentTimeMillis() * 1000;
    deviceWriter .newRow(bytes(rowKey));
    deviceWriter .addColumn(bytes(colmName), bytes(value), timestamp);

}
Run Code Online (Sandbox Code Playgroud)

已经改变了,-Xmx256M to -Xmx 1024M但无论如何都没有帮助.

更新: 根据我的观察,当我写入缓冲区(在物理内存中)时,就像没有.写入缓冲区正在增加新的写入需要时间.(这是我的猜测)

请回复.

java text-processing readline seek bufferedreader

6
推荐指数
1
解决办法
4982
查看次数

关闭BufferedReader和System.in

Reader rdr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(rdr);
String s;
s = br.readLine();
br.close();
Scanner sc = new Scanner(System.in);
s = sc.nextLine();
System.out.print(s);
Run Code Online (Sandbox Code Playgroud)

我注意到,如果我关闭BufferedReader,我将无法再从键盘插入输入,因为System.in某种程度上是关闭的.无论如何我可以保留br.close()(我需要它来删除文件),然后从键盘添加更多输入?

java input system.in bufferedreader

6
推荐指数
1
解决办法
6178
查看次数

Java-Convert使用BufferedReader时将String转换为int

使用BufferedReader时如何将String转换为int?据我所知,它的内容如下:

System.out.println("input a number");

int n=Integer.parseInt(br.readLine(System.in));
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,它不起作用.

错误消息说:

找不到合适的方法 readLine(java.io.InputStream)

它也说不br.readLine适用

java string bufferedreader

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

Parquet Writer到缓冲区或字节流

我有一个Java应用程序,已将json消息转换为拼花格式。是否有任何实木复合地板作家在Java中写入缓冲区或字节流?我看到的大多数示例仅适用于文件。

java bufferedreader parquet

6
推荐指数
1
解决办法
442
查看次数

BufferedReader不读取文件中的所有行

我试图/proc/net/xt_qtaguid/stats在Android 6中阅读.
使用cat命令,我得到这个:

2 a0 0 0 123456 311 48329 737 48 1
3 b0 0 0 0 0 0 0 0
4 c0 123456 311 48329 737 48 1
5 d0 111111 111 22222 222 33 1
Run Code Online (Sandbox Code Playgroud)

我的java代码尝试逐行读取文件:

File sysDataFile = new File(PATH_TO_FILE);
BufferedReader bufReader = null;
FileReader fileReader = null;
try {
   fileReader = new FileReader(sysDataFile);
   bufReader = new BufferedReader(fileReader);

   String line = null;
   while ((line = bufferedReader.readLine()) != null) {
       // print to …
Run Code Online (Sandbox Code Playgroud)

java android filereader bufferedreader java-io

6
推荐指数
2
解决办法
963
查看次数

你怎么能让BufferedReader.readLine()不挂?

有没有办法让你BufferedReader.readLine()不挂?

我正在创建一个服务器:

  • 检查客户端是否已提供任何输入.
  • 如果没有,它会执行其他代码并最终循环回检查客户端的输入.

如何在不运行的情况下检查客户端是否已提供任何输入readLine()?如果我运行readLine(),线程将挂起,直到输入传递?

java bufferedreader

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

为什么我的字符串返回“ \ ufffd \ ufffdN am e”

这是我的方法

public void readFile3()throws IOException
{
    try
    {
        FileReader fr = new FileReader(Path3);
        BufferedReader br = new BufferedReader(fr);
        String s = br.readLine();
        int a =1;
        while( a != 2)
        {
            s = br.readLine();
            a ++; 

        }
        Storage.add(s);

        br.close();

    }
    catch(IOException e)
    {
        System.out.println(e.getMessage());
    }
}
Run Code Online (Sandbox Code Playgroud)

由于某些原因,我无法读取仅包含以下文件:“名称为Intel(R)Core(TM)i5-2500 CPU @ 3.30GHz”

当我调试代码时,String s返回为“ \ ufffd \ ufffdN am e”,我不知道这些多余字符来自何处。.这使我无法正确读取文件。

java filereader bufferedreader

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

BufferedReader如何从S3读取文件?

我在AWS S3中有一个非常大的文件(几GB),我只需要文件中的少量行满足一定的条件.我不想将整个文件加载到内存中,然后搜索并打印这几行 - 这个内存负载太高了.正确的方法是只加载内存中需要的那些行.

根据AWS文档从文件中读取:

fullObject = s3Client.getObject(new GetObjectRequest(bucketName, key));
 displayTextInputStream(fullObject.getObjectContent());

private static void displayTextInputStream(InputStream input) throws IOException {
    // Read the text input stream one line at a time and display each line.
    BufferedReader reader = new BufferedReader(new InputStreamReader(input));
    String line = null;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }
    System.out.println();
}
Run Code Online (Sandbox Code Playgroud)

这里我们使用BufferedReader.我不清楚这里发生了什么.

我们每次读取新行时是否对S3进行网络调用,并且只将当前行保留在缓冲区中?或者是整个文件加载到内存中,然后由BufferedReader逐行读取?或者介于两者之间?

java inputstream bufferedinputstream amazon-s3 bufferedreader

5
推荐指数
1
解决办法
2123
查看次数