這邊介紹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);
}
}
}
}
}
自己感覺還是用迭代比較好,效率也搞點吧
分享到:
相关推荐
在Qt库中,进行文件和文件夹的拷贝操作是一项常见的任务,这在软件开发中尤其重要,因为可能需要在程序运行过程中动态处理文件和数据迁移。`Qt`提供了丰富的API来实现这些功能,让我们详细了解一下如何使用`Qt`进行...
在Python编程中,有时我们需要遍历一个特定的文件夹,获取其中所有文件的名称,并将这些名称存储到一个列表中。这在处理大量数据时非常有用,比如在深度学习项目中,我们需要对图像数据集进行预处理。下面,我们将...
- 遍历源文件夹中的所有文件,对每个文件执行复制操作。 - 如果目标位置的文件已经存在并且允许覆盖,则删除原文件后重新复制。 - 对于源文件夹下的子文件夹,递归调用 `XCopy` 函数进行复制。 #### 三、扩展...
2. 遍历文件夹:获取源文件夹内的所有文件和子文件夹,可以使用FSO的GetFolder和GetFiles方法。 3. 复制文件:对于每个文件,打开源文件,创建目标文件,然后读取源文件内容并写入目标文件。如果使用.NET Framework...
- 当驱动器控件中的驱动器字母发生变化时,文件夹列表控件中的内容应该相应更新。 - 通过`Dir1.Path = Drive1.Drive`这样的赋值语句可以实现上述功能。 ### 11. 查询类型 **知识点概述**: - **交叉表查询**:在一...
- **选项解析**:选择执行“文件”菜单中的“新建”命令是用于创建新的文件或文件夹,而不是删除。 **结论**:此题的答案是“错误”。 ### 23. 数据库查询条件 **知识点**:在数据库查询中,使用适当的条件来筛选...
文件内容 9. 显示宽度 (linesize) 说明:设置显示行的宽度,默认是80个字符 用法:set linesize 120 10. 显示页数 (pagesize) 说明:设置每页显示的行数,默认是14页 用法:set pagesize 20 三、 用户管理 1. 创建...