文件有127000行,想将文件以5000行为界分别写入文件夹下的不同文件中,怎么写代码?
------解决方案--------------------
自己整合下
public static void readFileByLines(String fileName) {
File file = new File(fileName);
BufferedReader reader = null;
try {
System.out.println("以行为单位读取文件内容,一次读一行");
reader = new BufferedReader(new FileReader(file));
String tempString = null;
int line = 1;
//一次读一行,读入null时文件结束
while ((tempString = reader.readLine()) != null) {
//把当前行号显示出来
System.out.println("line " + line + ": " + tempString);
line++;
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
}
------解决方案--------------------
注意count
int count = 0;
try
{
BufferedReader input = new BufferedReader(
new InputStreamReader(new FileInputStream(
"C:\\Users\\base.txt"), "UTF-8"));
BufferedWriter output = new BufferedWriter(new FileWriter(new File(
"result.sql")));
while ((basedata = input.readLine()) != null)
{
count++;
if(0==(count-1)%5000){
output = new BufferedWriter(new FileWriter(new File(
count+".sql")));
}
output.write(sql);
output.newLine();
}
output.write("commit;");
input.close();
output.close();
}
catch (Exception e)
{
e.printStackTrace();
}
------解决方案--------------------
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Test_16 {
public static void main(String[] args) throws IOException {
final String SrcFile = "D:\\tmp\\large_file.txt";
final String TargetFolder = "D:\\tmp\\target";
final int MaxShiftLines = 5000;
File targetFolder = new File(TargetFolder);
BufferedReader reader = new BufferedReader(new FileReader(SrcFile));
BufferedWriter writer = null;
try{
String line = null;
int fileIndex = 0;
for(int lineCount=0;(line=reader.readLine())!=null;lineCount++){
if(0==lineCount%MaxShiftLines){
writer = shiftFileWriter(writer,targetFolder,fileIndex);
}
writer.write(line);writer.newLine();
}
}finally{
reader.close();
if(writer!=null)writer.close();
}
}
private static BufferedWriter shiftFileWriter(BufferedWriter writer, File targetFolder, int fileIndex) throws IOException {
if(writer!=null){
writer.close();
}
String fileName = "target_"+fileIndex+".txt";
File target = new File(targetFolder,fileName);
return new BufferedWriter(new FileWriter(target));