BufferedReader中的readLine方法可以一行行的读,读一行写一行,再做个计数器,读一行递增一次,当计数器到了5000的时候,换个文件写!

解决方案 »

  1.   

    自己整合下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) {
    }
    }
    }
    }
      

  2.   

    注意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();
            }
      

  3.   

    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));
    }}