方式一 :
/**
* 按行分割文件
* @param sourceFilePath 为源文件路径
* @param targetDirectoryPath 文件分割后存放的目标目录
* @param rows 为多少行一个文件
*/
public static int splitFileByLine(String sourceFilePath, String targetDirectoryPath, int rows) {
String sourceFileName = sourceFilePath.substring(sourceFilePath.lastIndexOf(File.separator) + 1, sourceFilePath.lastIndexOf("."));//源文件名
String splitFileName = targetDirectoryPath + File.separator + sourceFileName + "-%s.txt";//切割后的文件名
File targetDirectory = new File(targetDirectoryPath);
if (!targetDirectory.exists()) {
targetDirectory.mkdirs();
}
PrintWriter pw = null;//字符输出流
String tempLine;
int lineNum = 0;//本次行数累计 , 达到rows开辟新文件
int splitFileIndex = 1;//当前文件索引
try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(sourceFilePath)))) {
pw = new PrintWriter(String.format(splitFileName, splitFileIndex));
while ((tempLine = br.readLine()) != null) {
if (lineNum > 0 && lineNum % rows == 0) {//需要换新文件
pw.flush();
pw.close();
pw = new PrintWriter(String.format(splitFileName , ++splitFileIndex));
}
pw.write(tempLine + "\n");
lineNum++;
}
return splitFileIndex;
} catch (Exception e) {
e.printStackTrace();
return -1;
}finally {
if (null != pw) {
pw.flush();
pw.close();
}
}
}
今天的文章Java按行分割文件分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/12408.html