這邊介紹2中方式,對文件夾進行操作,并且copy文件
第一種普通方式遍歷文件夾(里面有些null沒做)
package com.fih.thh;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.LinkedList;
/**
*把D盤跟目錄下面的tools下面的以.txt結尾(包括子文件夾)文件拷貝到Z盤
*/
public class TestCopy {
static String path = "D:\\tools";
public static void main(String[] args) {
LinkedList<File> list =new LinkedList<File>();
File file = new File(path);
if(file != null && file.isDirectory()){
File[] files = file.listFiles();
for(File f : files){
if(f.isDirectory()){
list.add(f);
}else{
new TestCopy().pass(f);
}
}
while(!list.isEmpty()){
File f = list.removeFirst();
for(File ff : f.listFiles()){
if(ff.isDirectory()){
list.add(ff);
}else{
new TestCopy().pass(ff);
}
}
}
}
}
public void pass(File f){
System.out.println("++++++++++++" + f.getAbsolutePath());
if(f.getName().split("\\.")[1].equals("txt")){
BufferedReader bf = null;
BufferedWriter bw = null;
try {
File ff = new File("Z:\\" + f.getName());
if(!ff.exists()){
ff.createNewFile();
}
bf = new BufferedReader(new FileReader(f.getAbsolutePath()));
bw = new BufferedWriter(new FileWriter("Z:\\" + ff.getName()));
String line;
while((line = bf.readLine())!= null){
String lineNew = line.split("\\.")[1];
bw.write(lineNew);
bw.newLine();
}
//傳送完要flush,不然不會拷貝東西過去,或者close時也有flush功能
bw.flush();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
try {
bf.close();
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
第二種迭代方式
package com.fih.thh;
import java.io.File;
/**
*把D盤跟目錄下面的tools下面的以.txt結尾(包括子文件夾)文件拷貝到Z盤
*/
public class TestCopy2 {
public static void main(String[] args) {
File file = new File("D:\\tools");
pass(file);
}
public static void pass(File file){
if(file != null && file.isDirectory()){
File[] files = file.listFiles();
for(File f : files){
if(f.isDirectory()){
pass(f);
}else{
//調用了TestCopy中的類
new TestCopy().pass(f);
}
}
}
}
}
自己感覺還是用迭代比較好,效率也搞點吧
分享到:
相关推荐
在Java编程中,遍历文件夹内的文件是一项常见的任务,特别是在处理文件系统操作时。这个话题涉及到了Java的I/O(输入/输出)流、文件系统API和递归概念。以下是对这一主题的详细讲解: 首先,Java提供了一个强大的`...
### C语言遍历文件夹里所有文件的知识点 #### 一、引言 在计算机编程领域,特别是操作系统相关的开发工作中,经常会遇到需要遍历文件夹内所有文件的需求。本篇文章将详细解析一个C语言实现的文件夹遍历程序,帮助...
ASP 实现遍历文件夹中图片文件,并按照时间顺序显示 在这个资源中,我们将学习如何使用 ASP 语言来实现遍历文件夹中图片文件,并按照时间顺序显示。这个功能可以应用于图像展示系统、图片库管理系统等领域。 变量...
本教程将详细介绍如何在这样的环境下遍历文件夹、复制文件、删除文件以及复制文件内容。 一、遍历文件夹 在C#中,我们可以使用`System.IO`命名空间下的`DirectoryInfo`类来遍历文件夹。以下是一个简单的示例: ``...
遍历指定文件夹下的所有文本夹,首先,获取所有的文件夹;其次,从找到的第一个文件开始,循环查找,直到没有文件为止,最后,将文件目录和文件名组合,并存放到数组中
在C++编程中,遍历文件夹及其子文件夹并输出所有文件的路径与内容是一项常见的任务,尤其在处理大量数据或进行文件管理时。这个程序的实现涉及到对操作系统文件系统的接口调用以及文件操作。以下是一份详细的步骤和...
对linux命令tree的简单实现,遍历指定文件夹下的所有文件
在IT领域,遍历文件夹和读取文件是常见的任务,尤其在自动化处理、数据分析或者日志分析等场景中。这个资源"遍历文件夹名称及文件内数据_遍历文件夹_读取文件_源码"提供了一个解决此类问题的代码示例,可能包含了...
"QT遍历删除文件夹下所有文件及目录" 在QT应用程序中,需要遍历删除文件夹下所有文件及目录是一种常见的操作。本文将详细介绍如何使用QT框架实现该功能。 一、使用QDir和QFileInfo遍历删除文件夹 在QT中,可以...
基于matlab的遍历文件夹中的所有子文件,并且读取并存储子文件的数据
本文将详细讲解如何在驱动层获取文件大小、遍历文件夹、创建文件以及隐藏文件。 首先,驱动层获取文件大小是通过系统调用或IRP(I/O请求包)实现的。IRP是Windows操作系统中处理设备I/O请求的一种机制。当用户模式...
c c++ c语言遍历文件夹 c语言读文件 c语言写文件 高效算法
在IT领域,遍历文件夹并自动生成目录树是一项常用的任务,特别是在文件管理、数据整理以及自动化脚本编写中。这个过程通常涉及到操作系统层面的文件系统操作,编程语言中的文件I/O(输入/输出)以及目录结构的表示。...
根据给定的信息,我们可以深入探讨如何在C#中遍历文件夹中的文件,并结合实际应用场景进行解析。 ### 遍历文件夹中的文件 #### 1. 前言 在许多应用程序中,特别是那些涉及文件管理和处理的应用程序中,遍历文件夹...
VB 代码遍历文件夹下 所有文件夹,超简短代码,速度超快
C#遍历指定文件夹中的所有文件 C#遍历指定文件夹中的所有文件是指使用C#语言编写程序来遍历指定文件夹中的所有文件和子目录。下面 将详细介绍如何使用C#来实现这一功能。 首先,需要使用DirectoryInfo类来表示...
### JavaScript遍历文件夹下的所有文件与目录 在JavaScript中,遍历文件夹下的所有文件与目录是一项常见的任务,尤其是在需要处理本地文件系统时。本文将详细介绍如何使用`Scripting.FileSystemObject`对象来实现这...
在Java编程语言中,遍历一个目录下的所有文件和子目录是一项常见的任务,尤其是在处理文件系统操作时。这里我们将深入探讨如何使用Java API来实现这一功能,并解释相关的知识点。 首先,Java提供了`java.io.File`类...
Delphi 遍历所有文件夹的函数详解 在 Delphi 编程中,遍历文件夹是一个...MakeFileList 函数是一个非常实用的 Delphi 函数,能够帮助开发者快速遍历文件夹和文件,并与 Excel 操作结合,以完成报表的数据合成和整理。
在编程领域,遍历文件夹及其子目录中的所有文件是一项常见的任务,特别是在处理大量数据或进行文件操作时。本文将详细讲解如何使用VC++(Visual C++)来实现这一功能,以及涉及的相关知识点。 首先,我们需要理解...