Java:一次按'n'条记录大文件

时间:2013-09-17 05:02:13

标签: java jdbc

我有一个包含5k记录的输入文本文件。我想读取1k记录,将参数传递给SQL查询IN子句(限制为1k值),然后从文本文件中获取下一个1k记录并重复。我怎么能在java中这样做。以下是我到目前为止的示例代码:

FileInputStream fis = null;
    BufferedReader reader = null;

    try {
        fis = new FileInputStream("values.txt");
        reader = new BufferedReader(new InputStreamReader(fis))
        int i,counter=0;
        do{
        String line;
        ArrayList values = new ArrayList();
        for(i=0;i<1000;i++){
            line = reader.readLine();
            values.append(line);
            if(line ==null)
                break;
        }
        counter = i;
        String sql = ....;
        //db connection
        }while(counter<6000);
        conn.close;
     }

2 个答案:

答案 0 :(得分:0)

您可以使用缓冲区提高读取速度,以便能够在每个文件访问中读取大块。因此,请指定BufferedReader的缓冲区大小:

BufferedReader br = new BufferedReader(new FileReader("values.txt"), 1000);

或使用您自己的缓冲区将整个文件读取到内存中,如:

char[] buffer = new char[1000];
Reader r = new FileReader("values.txt");
int read;
do {
    read = r.read(buffer);
    // store buffer in a StringBuilder
} while (read > 0);
//read StringBuider using a buffered reader

这取决于您的要求以及文件的大小

答案 1 :(得分:0)

您可以创建任何大小的BufferedReader,例如底部样式创建1 KB缓冲读取器。您可能应该查看文件中有多少行生成1 KB或更多,并相应地进行配置。

BufferedReader br;
br = new BufferedReader(new InputStreamReader(new FileInputStream("values.txt"), "UTF-16"), 1*1024);

您可以阅读BufferedReader

的文档