我有一个包含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;
}
答案 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
的文档