Java 逐行读写 TXT 文件
package com.weixiao.download; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.util.HashMap; import java.util.Map; import org.apache.log4j.Logger; public class IOHelper { private static Logger logger = Logger.getLogger(IOHelper.class); /** * 获取 BufferedReader 实例 * @author lipw * @date 2017年12月14日上午9:50:37 * @param filePath 文件路径 * @return */ public static BufferedReader getBufferedReader(String filePath) { File file = new File(filePath); BufferedReader reader = null; try { reader = new BufferedReader(new FileReader(file)); } catch (Exception e) { e.printStackTrace(); } finally { // todo } return reader; } /** * 获取 BufferedWriter 实例 * @author lipw * @date 2017年12月14日上午9:50:07 * @param filePath 文件路径 * @return */ public static BufferedWriter getBufferedWriter(String filePath) { File file = new File(filePath); BufferedWriter writer = null; try { writer = new BufferedWriter(new FileWriter(file)); } catch (Exception e) { e.printStackTrace(); } finally { // todo } return writer; } /** * 处理博客排序 * @author lipw * @date 2017年12月14日上午9:47:06 * @param filePath 混序文件路径 * @param outPath 按顺序排列的输出文件路径 */ public static void handBlogOrder(String filePath, String outPath) { BufferedReader reader = getBufferedReader(filePath); BufferedWriter writer = getBufferedWriter(outPath); // 用户按排名记录 Map<Integer, String> blogMap = new HashMap<Integer, String>(); if (reader == null) { logger.warn("读取文件失败!"); return; } if (writer == null) { logger.warn("写入文件失败!"); return; } String lineStr = null; int line = 1; try { // 逐行读取并处理 while ((lineStr = reader.readLine()) != null) { // 6,===http://blog.csdn.net/augusdi lineStr = lineStr.replaceAll("\\[com.weixiao.download.CsdnBlogDownloader\\]\\-排名:", ""); String[] blog = lineStr.split(",==="); if (blog.length != 2) { continue; } if (blog[0].length() > 3) { continue; } Integer num = Integer.parseInt(blog[0]); if (num > 200) { continue; } System.out.println("line" + line + ":" + lineStr); line++; // 放到 Map 缓存中 blogMap.put(num, lineStr); } // 根据排名索引读取并写入文件 for (int i = 0; i < 201; i++) { lineStr = blogMap.get(i); if (lineStr != null) { writer.write(lineStr + "\r\n"); } } } catch (Exception e) { e.printStackTrace(); } finally { // 用完了记得关闭 if (reader != null) { try { reader.close(); } catch (Exception e) { e.printStackTrace(); } } // 用完了记得关闭 if (writer != null) { try { writer.close(); } catch (Exception e) { e.printStackTrace(); } } } } public static void main(String[] args) { //处理博客排序 handBlogOrder("/Users/aven/Downloads/blogOrder.txt", "/Users/aven/Downloads/blogOrder200.txt"); } }输入文件内容示例:
[com.weixiao.download.CsdnBlogDownloader]-排名:496,===http://blog.csdn.net/raptor [com.weixiao.download.CsdnBlogDownloader]-排名:515,===http://blog.csdn.net/zdy0_2004 [com.weixiao.download.CsdnBlogDownloader]-排名:374,===http://blog.csdn.net/hejianhua [com.weixiao.download.CsdnBlogDownloader]-排名:311,===http://blog.csdn.net/q383965374 [com.weixiao.download.CsdnBlogDownloader]-排名:868,===http://blog.csdn.net/kongqz [com.weixiao.download.CsdnBlogDownloader]-排名:675,===http://blog.csdn.net/lufy_Legend [com.weixiao.download.CsdnBlogDownloader]-排名:88,===http://blog.csdn.net/byxdaz [com.weixiao.download.CsdnBlogDownloader]-排名:250,===http://blog.csdn.net/yenange [com.weixiao.download.CsdnBlogDownloader]-排名:423,===http://blog.csdn.net/kkdelta [com.weixiao.download.CsdnBlogDownloader]-排名:208,===http://blog.csdn.net/matrix67 [com.weixiao.download.CsdnBlogDownloader]-排名:10,===http://blog.csdn.net/dyllove98 [com.weixiao.download.CsdnBlogDownloader]-排名:642,===http://blog.csdn.net/redarmy_chen [com.weixiao.download.CsdnBlogDownloader]-排名:957,===http://blog.csdn.net/chenleixing
输出文件内容示例:
1,===http://blog.csdn.net/abc649395594 2,===http://blog.csdn.net/phphot 3,===http://blog.csdn.net/ooduil 4,===http://blog.csdn.net/yuanmeng001 5,===http://blog.csdn.net/tianlesoftware 6,===http://blog.csdn.net/augusdi 7,===http://blog.csdn.net/chimomo 10,===http://blog.csdn.net/dyllove98相关文章: