删除citeulike导出的bib文件中的中文字符,使之能在WinEdt中读取
编程技术  /  houtizong 发布于 3年前   168
package lc.bibtex;import java.io.*;import javax.swing.JOptionPane;public class DealWithCiteulikeBibFile {//删除当前文件夹下的bib文件中以"citeulike" 开头(不含空格)的行,以及非ASCII字符的行。//原文件名称加.origin;生成的文件与原文件同名public static void main(String[] args) throws IOException {//找到.bib文件File[] bibFiles = new File(".").listFiles(new FileFilter() {@Overridepublic boolean accept(File pathname) {return pathname.isFile() && pathname.getName().endsWith(".bib");}});String[] toDelete = { "citeulike" };//删除以 "citeulike" 开头的行boolean deleteNotASCII = true;//删除含非ASCII字符的行,否则ctex读取错误。。。。boolean deleteOriginFileIfNoChange = true;//如果生成的文件与原文件相同,则删除原文件for (File f : bibFiles) {File bak = new File(f.getCanonicalPath() + ".origin");if (bak.exists())bak.delete();boolean b = f.renameTo(bak);//现在备份文件为原文件了!!if (!b) {JOptionPane.showMessageDialog(null, "文件 " + f.getName()+ " 或文件 " + bak.getName() + "可能正被其他程序访问!");continue;}deleteLinesNotASCII_or_StartWith(bak, f, toDelete, deleteNotASCII,deleteOriginFileIfNoChange);}}/** * 删除除空格外以toDelete中字符串开头的单词(可选),以及含有非ASCII字符的行(可选) * * @param originFile * 原文件 * @param newFileName * 输出文件 * @param toDelete * 删除除空格外以toDelete中字符串开头的单词,toDelete可为null,视为不选该项 * @param deleteNotASCII * 是否删除含非ASCII字符的行 * @param deleteOriginFileIfNoChange * 当新文件和原文件相同时,是否删除原文件 * @throws IOException */public static void deleteLinesNotASCII_or_StartWith(File originFile,File newFile, String[] toDelete, boolean deleteNotASCII,boolean deleteOriginFileIfNoChange) throws IOException {BufferedReader bf = new BufferedReader(new FileReader(originFile));PrintWriter writer = new PrintWriter(newFile);boolean hasChanged = false;loop: while (bf.ready()) {String line = bf.readLine();String lineTrim = line.trim();if (toDelete != null)for (int i = 0; i < toDelete.length; i++) {//删除除空格外以toDelete中字符串开头的单词if (lineTrim.startsWith(toDelete[i])) {hasChanged = true;continue loop;}}for (int i = 0; i < lineTrim.length(); i++) {//删除该行中含有非ASCII字符的行if (lineTrim.charAt(i) > 127) {hasChanged = true;continue loop;}}writer.println(line);}bf.close();writer.close();if (!hasChanged && deleteOriginFileIfNoChange)originFile.delete();}}
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成
网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];
文章归档
文章标签
友情链接