当前位置: 代码迷 >> J2SE >> 初学者 Java文件读写
  详细解决方案

初学者 Java文件读写

热度:563   发布时间:2016-04-23 20:43:15.0
菜鸟求助: Java文件读写
文件有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));
  相关解决方案