0

我有一个包含 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;
     }
4

2 回答 2

0

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

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

您可以阅读BufferedReader的文档

于 2013-09-17T05:25:34.230 回答
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

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

于 2013-09-17T05:18:31.663 回答