`

java文件操作的一个摘录,还没看先存在这了

    博客分类:
  • Java
阅读更多
   1.  /** 
   2.  * 给定一个源文件路径或者File和目标路径,把源文件路径下的的所有txt文件和文件夹拷贝到目标路径下 
   3.  * 并且可以按照给定的编码输出txt文件 
   4.  * @author myyate 
   5.  * 
   6.  */ 
   7. public class Converter {  
   8.     public Converter(String inPath, String outPath) throws Exception {  
   9.          this(inPath, outPath, DEFAULT_ENCODING);  
  10.     }  
  11.     public Converter(String inPath, String outPath, String encoding)
  12.          throws Exception {  
  13.          this(new File(inPath), new File(outPath), encoding);  
  14.     }  
  15.     public Converter(File inFile, File outFile) throws Exception {  
  16.          this(inFile, outFile, DEFAULT_ENCODING);  
  17.     }  
  18.     public Converter(File inFile, File outFile, String encoding) throws Exception {  
  19.          this.inFile = inFile;  
  20.          this.outFile = outFile;  
  21.          if(!outFile.exists()) {  
  22.              outFile.mkdir();  
  23.          }  
  24.          this.encoding = encoding;  
  25.     }  
  26.       
  27.     public void convert() throws Exception {  
  28.          copyFiles(inFile, outFile);  
  29.     }  
  30.       
  31.     private void copyFiles(File inDirectory, File outDirectory) throws Exception {  
  32.          for(File file : inDirectory.listFiles(new TxtFileFilter())) {  
  33.              File outFile = new File(outDirectory.getAbsolutePath(), file.getName());  
  34.              if(file.isFile()) {  
  35.              //如果是文件,就把文件拷贝到目标文件夹中  
  36.                   copySingleFile(file, outFile);  
  37.              } else if(file.isDirectory()) {  
  38.                   if(!outFile.exists()) {  
  39.                        outFile.mkdir();  
  40.                   }  
  41.                   copyFiles(file, outFile);  
  42.              }  
  43.          }  
  44.     }  
  45.  
  46.     private void copySingleFile(File src, File des) throws Exception {  
  47.          if(!des.exists()) {  
  48.              des.createNewFile();  
  49.          }  
  50.          String encodingUse = ((encoding == null) ? DEFAULT_ENCODING : encoding);  
  51.          Reader in =   
  52.              new BufferedReader(new InputStreamReader(new FileInputStream(src)));  
  53.          //设定输出文件的编码  
  54.          Writer out =   
  55.              new BufferedWriter(new OutputStreamWriter(new FileOutputStream          (des), encodingUse));  
  56.  
  57.          char[] buffer = new char[4096];  
  58.          int readBytes = -1;  
  59.          while((readBytes = in.read(buffer)) != -1) {  
  60.              out.write(buffer, 0, readBytes);  
  61.          }  
  62.          out.flush();  
  63.       
  64.          out.close();  
  65.          in.close();  
  66.     }  
  67.  
  68.       
  69.     class TxtFileFilter implements FileFilter {  
  70.  
  71.          public boolean accept(File pathname) {  
  72.              if(pathname.isDirectory()) {  
  73.                   return true;  
  74.              }  
  75.           
  76.              String absolutePath = pathname.getAbsolutePath();  
  77.              String suffix = absolutePath.substring(absolutePath.length() - 3);  
  78.              //只拷贝txt文件  
  79.              if("txt".equalsIgnoreCase(suffix)) {  
  80.                   return true;  
  81.              }  
  82.           
  83.              return false;  
  84.          }  
  85.     }  
  86.     
  87.     private File inFile;    //输入路径  
  88.     private File outFile;   //输出路径  
  89.     private String encoding;    //输出文件编码  
  90.     private static String DEFAULT_ENCODING = "GBK";  
  91. } 

测试代码如下:
java 代码

   1. public class Test {  
   2.  
   3.     static String IN_PATH = "F:/Novel";  
   4.     static String OUT_PATH = "F:/NovelConvert";  
   5.       
   6.     public static void main(String[] args) throws Exception {  
   7.         Converter convert = new Converter(IN_PATH, OUT_PATH, "Unicode");  
   8.         convert.convert();  
   9.     }  
  10. } 

程序是可以正常执行了,并且也转码了,不过不幸的是转成后的文件格式不是unicode,而是unicode big endian,拷贝到手机里还是乱码,nnd,现在也不管手机可否看了,我想问大家一下,如何修改才可以把txt文件改成unicode格式呢?
分享到:
评论

相关推荐

    java程序员面试宝典

    这行代码最终只创建了一个对象,因为常量池的存在使得相同的字符串常量只会创建一次。 38. try块中的return语句会先执行,然后执行finally块,然后再返回。 39. 这个问题没有提供代码,因此无法分析输出结果。 40...

    OReilly.Modern.Java.Recipes.2017.8

    java.util.function包是Java 8中的一个新包,它提供了一系列用于函数式编程的函数式接口,这些接口是Java 8流API操作的核心组成部分。 《Streams》章节则介绍了流的创建和操作。流API是Java 8中引入的一个强大的...

    JAVA课程设计连连看游戏的开发.pdf

    而在游戏开发中,合理运用数组、集合等数据结构存储游戏状态,是设计模式中的一个基本应用。 5. 事件处理机制:在文件中“setbutton”和“LabelPanelbutton”表明了事件监听器的使用。SWING组件可以通过添加事件...

    JDBC增删改查.pdf

    在DAO层,除了基础类外,还提到了一个具体的DAO类mindDAO,该类继承自基础DAO类。mindDAO类负责具体的数据库操作,如查询、添加和更新操作。在文档的摘录中,可以看到mindDAO类中的以下方法: - getAll方法:这个...

    EFC:提取FileFolder更改EFC

    提取物的基础可能是日期/时间:在此时间之后创建或修改的每个文件/文件夹都将位于摘录中另一个文件夹结构:每个文件/文件夹在另一个文件夹结构中不存在,或者在引用文件之后进行了修改,将出现在摘录中。...

    使用Eclipse构建Maven项目.pdf

    整体来看,Eclipse与Maven的集成是一个复杂但非常有用的过程,可以帮助开发者更高效地管理和构建Java项目。上述内容涵盖了从环境搭建到项目构建和发布的基本步骤,对于想要掌握Eclipse中Maven使用方法的开发者而言,...

    RSS案例视频,RSS阅读器

    发布一个RSS文件后,这个RSS Feed中包含的信息就能直接被其他站点调用,而且由于这些数据都是标准的XML格式,所以也能在其他的终端和服务中使用。  如果从RSS阅读者的角度来看,完全不必考虑它到底是什么意思,...

    logic标签库.pdf

    由于提供的文件内容是一个关于“logic标签库.pdf”的摘录,内容涉及了一系列与JSP页面开发相关的标签和属性。为了使内容更加通顺,以下是对这些知识点的整合和解释,将尽量避免直接引用原始文档的文字以减少OCR错误...

    Spring AOP+ehCache简单缓存系统解决方案

    当创建、更新或删除操作发生时,我们可以触发一个自定义的事件,然后在拦截器中监听这个事件,从而清理相关的缓存项。这可以通过实现`ApplicationListener`接口并重写`onApplicationEvent()`方法来完成。 总结起来...

    401java-reading-notes

    标题:“401java-reading-notes”是一个由代码研究员训练营(CODE-401)提供的Java学习资料,特别是针对Java编程语言的基础和深入理解进行的阅读笔记。这些笔记旨在帮助学员系统地掌握Java的知识体系,包括但不限于...

    基于WEBGIS的电子地图的设计与实现_彭法銮.pdf

    根据提供的文件内容,以下是关于"基于WEBGIS的电子地图的设计与实现"的知识点总结: 1. WebGIS概念与特点:WebGIS指的是基于Internet或Intranet网络环境的一种应用地理信息的计算机信息系统。它被国际学术界称为...

    全国计算机二级考试题目.pdf

    从提供的文件内容来看,此文件似乎是关于全国计算机二级考试题目的部分摘录。全国计算机二级考试是中国计算机等级考试(National Computer Rank Examination,简称NCRE)的第二级,主要面向大专及本科在校学生和社会...

    Camstar API文档 (英文版,源码实例)

    文档中提到的标签“Camstar”是指Camstar软件系统本身,这是Siemens提供的一个用于管理制造业务的软件平台,它涵盖了从产品设计到生产管理的整个产品生命周期。标签也表明文档内容专注于Camstar软件系统的技术层面,...

    安车机动车检验监管系统接口使用手册V4.40(设备厂家)

    4. **XML数据结构**:从文档摘录的部分可以看出,XML文档通常包括一个根节点,如"<root>",以及多个子节点。例如,"<QueryCondition>"节点可能用于描述查询条件,而"<hphm>"节点则可能包含车辆的编号信息。正确构建...

    UE快捷键大全.pdf

    - Ctrl+F3/F3:查找下一个/上一个。 4. 导航快捷键: - Ctrl+R:转到特定符号。 - Ctrl+T:转到类型。 - Ctrl+L:跳转到代码行。 - Ctrl+O:转到文件。 - Ctrl+N:新建项目或文件。 5. 代码编辑快捷键: - ...

    servlet3.1规范英文版

    规范明确指出,其内容受版权保护,且可能受到一个或多个美国专利、外国专利或待审批申请的保护。除了下面提供的许可外,未经 Oracle America, Inc. 以及其授权方的事先书面授权,不得以任何形式复制 Specification ...

Global site tag (gtag.js) - Google Analytics