求代码!! java如何读取文件夹中所有txt文档(包含子文件夹中的txt文档)

2024-11-22 23:28:20
推荐回答(2个)
回答1:

  /**新建一个类把下面代码放进去,注意要设置basePath(你要读取的文件夹),读取和写入的方法也都写好了.你可以根据自己的需求掉用就行了**/

  static String basePath="/home/csvDir";
  /**
  * 查找文件夹下所有符合csv的文件
  *
  * @param dir 要查找的文件夹对象
  * */
  public static void findFile(File dir) throws IOException{
  File[] dirFiles = dir.listFiles();
  for(File temp : dirFiles){
  if(!temp.isFile()){
  findFile(temp);
  }
  //查找指定的文件
  if(temp.isFile() && temp.getAbsolutePath().endsWith(".txt") ){
  System.out.println(temp.isFile() + " " + temp.getAbsolutePath());
  readFileContent(temp);
  }
  }
  }
  
  /**
  * @param file 要读取的文件对象
  * @return 返回文件的内容
  * */
  public static String readFileContent(File file) throws IOException{
  FileReader fr = new FileReader(file);
  BufferedReader br = new BufferedReader(fr);
  StringBuffer sb = new StringBuffer();
  while(br.ready()){
  sb.append(br.readLine());
  }
  System.out.println(sb.toString());
  return sb.toString();
  }
  
  /**
  * @param file 要写入的文件对象
  * @param content 要写入的文件内容
  * */
  public static void writeFileContent(File file,String content) throws IOException{
  FileWriter fw = new FileWriter(file);
  fw.write(content);
  fw.flush();
  fw.close();
  }
  
  public static void main(String[] args) {
  try {
  findFile(new File(basePath));
  } catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  }
  }

回答2:

 /** 
    * 复制整个目录的内容 
    *  
    * @param srcDirName 
    *            待复制目录的目录名 
    * @param destDirName 
    *            目标目录名 
    * @param overlay 
    *            如果目标目录存在,是否覆盖 
    * @return 如果复制成功返回true,否则返回false 
    */  
   public static boolean copyDirectory(String srcDirName, String destDirName,  
           boolean overlay) {  
       // 判断源目录是否存在  
       File srcDir = new File(srcDirName);  
       if (!srcDir.exists()) {  
           MESSAGE = "复制目录失败:源目录" + srcDirName + "不存在!";  
           JOptionPane.showMessageDialog(null, MESSAGE);  
           return false;  
       } else if (!srcDir.isDirectory()) {  
           MESSAGE = "复制目录失败:" + srcDirName + "不是目录!";  
           JOptionPane.showMessageDialog(null, MESSAGE);  
           return false;  
       }  
 
       // 如果目标目录名不是以文件分隔符结尾,则加上文件分隔符  
       if (!destDirName.endsWith(File.separator)) {  
           destDirName = destDirName + File.separator;  
       }  
       File destDir = new File(destDirName);  
       // 如果目标文件夹存在  
       if (destDir.exists()) {  
           // 如果允许覆盖则删除已存在的目标目录  
           if (overlay) {  
               new File(destDirName).delete();  
           } else {  
               MESSAGE = "复制目录失败:目的目录" + destDirName + "已存在!";  
               JOptionPane.showMessageDialog(null, MESSAGE);  
               return false;  
           }  
       } else {  
           // 创建目的目录  
           System.out.println("目的目录不存在,准备创建。。。");  
           if (!destDir.mkdirs()) {  
               System.out.println("复制目录失败:创建目的目录失败!");  
               return false;  
           }  
       }  
 
       boolean flag = true;  
       File[] files = srcDir.listFiles();  
       for (int i = 0; i < files.length; i++) {  
           // 复制文件  
           if (files[i].isFile()) {  
               flag = CopyFileUtil.copyFile(files[i].getAbsolutePath(),  
                       destDirName + files[i].getName(), overlay);  
               if (!flag)  
                   break;  
           } else if (files[i].isDirectory()) {  
               flag = CopyFileUtil.copyDirectory(files[i].getAbsolutePath(),  
                       destDirName + files[i].getName(), overlay);  
               if (!flag)  
                   break;  
           }  
       }  
       if (!flag) {  
           MESSAGE = "复制目录" + srcDirName + "至" + destDirName + "失败!";  
           JOptionPane.showMessageDialog(null, MESSAGE);  
           return false;  
       } else {  
           return true;  
       }  
   }