java按行分割文件

来源:互联网 发布:什么是圆方软件 编辑:程序博客网 时间:2024/06/07 11:20
package com.ceair.utils;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStreamReader;import java.io.OutputStreamWriter;public class FileTest {public static void main(String[] args) {splitDataToSaveFile(4, "E:\\pss_2017\\psdp-tsdata-datahub\\src\\main\\resources\\test.txt","E:\\pss_2017\\psdp-tsdata-datahub\\src\\main\\resources\\");}/** * 按行分割文件 *  * @param rows *            为多少行一个文件 * @param sourceFilePath *            为源文件路径 * @param targetDirectoryPath *            文件分割后存放的目标目录 */public static void splitDataToSaveFile(int rows, String sourceFilePath, String targetDirectoryPath) {File sourceFile = new File(sourceFilePath);File targetFile = new File(targetDirectoryPath);if (!sourceFile.exists() || rows <= 0 || sourceFile.isDirectory()) {return;}if (targetFile.exists()) {if (!targetFile.isDirectory()) {return;}} else {targetFile.mkdirs();}try {InputStreamReader in = new InputStreamReader(new FileInputStream(sourceFilePath), "GBK");BufferedReader br = new BufferedReader(in);BufferedWriter bw = null;String str = "";String tempData = br.readLine();int i = 1, s = 0;while (tempData != null) {str += tempData + "\r\n";if (i % rows == 0) {bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(targetFile.getAbsolutePath() + "/" + sourceFile.getName() + "_" + (s + 1) + ".txt"), "UTF-8"), 1024);bw.write(str);bw.close();str = "";s += 1;}i++;tempData = br.readLine();}if ((i - 1) % rows != 0) {bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(targetFile.getAbsolutePath() + "/" + sourceFile.getName() + "_" + (s + 1) + ".txt"), "UTF-8"),1024);bw.write(str);bw.close();br.close();s += 1;}in.close();} catch (Exception e) {}}}