黑马程序员技术交流社区
标题:
File问题二
[打印本页]
作者:
haha_hyq
时间:
2012-9-19 23:40
标题:
File问题二
本帖最后由 屈俊材 于 2012-9-24 22:29 编辑
将指定目录下的所有的java文件的绝对路径存储到一个文本文件总,包含子目录中的java文件
作者:
何小红
时间:
2012-9-19 23:42
public class RemoveDirectoryTest {
/**
* @param args
* 需求:删除一个带内容的目录
* 思路:
* 1, 删除完文件夹原理是:必须是从里往外删除,必须保证该文件夹为空,该文件夹才可以被删除
* 2, 它里面到底有多少级层级目录,是不清楚的,所以必须用到递归
*/
public static void main(String[] args) {
//封装目录
File dir = new File("D:\\abc");
//调用自定义方法removeDir
removeDir(dir);
}
public static void removeDir(File dir) {
//1. 列出指定目录下的所以文件对象
File[] files = dir.listFiles();
//2. 遍历该数组中所有文件对象,并对其进行判断
for(File file : files){
//对file对象进行继续判断,如果是文件夹,继续调用该方法,继续判断
if(file.isDirectory()){//如果是目录继续绩效判断
removeDir(file);//递归调用removeDir方法
}else{
System.out.println(file.toString()+" :"+file.delete());//调用File的delete方法删除文件
}
}
System.out.println(dir.toString()+" :"+dir.delete());//delete方法可以删除文件或文件夹
}
}
哈鼎 23:41:50
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileFilter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class JavaFileListTest {
/**
* @param args
* 需求:将制定目录下的所有的java文件的绝对路径存储到一个文本文件总,包含子目录中的java文件
* 思路:
* 1,题意:建立制定类型的文件的清单列表,方便对该类型文件的查找。
* 2,应该对制定目录进行递归遍历,获取到所有制定类型文件的对象
* 3,将文件对象中的绝对路径写入到一个文本文件中。
*
* 步骤:
* 1, 定义一个方法进行递归,递归过程中,需要对递归的文件进行判断,满足条件的对象记性存储。
* 1.1必须先定义一个过滤器。是一个文件过滤器,或者是一个文件名称过滤器。FileFilter FilenameFilter
* 2.2一旦满足过滤条件,定义一个集合进行文件对象的存储。ArrayList
* 2,对存储的文件对象的集合进行迭代,定义输出流将文件对象总的信息写入到一个文件中。
* @throws IOException
*/
public static void main(String[] args) throws IOException {
//将制定的目录封装成对象
File dir = new File("E:\\Java基础班");
//定义过滤器
FileFilter filter = new FileFilter(){//FileFilter 是一个抽象类
@Override
public boolean accept(File pathname) { //accept是个抽象方法需要自己覆写
return pathname.getName().endsWith(".java");
//File的方法:String getName() 返回由此抽象路径名表示的文件或目录的名称 。
// boolean endsWith(String suffix) 测试此字符串是否以指定的后缀结束
}
};
List<File> list = new ArrayList<File>();
getFileList(dir,filter,list);
File dest = new File(dir,"javalist.txt");
wite2File(list,dest);
}
/**
* 将集合中的file对象的信息写入到目标文件夹中。
* @param list
* @param dest
* @throws IOException
*/
public static void wite2File(List<File> list, File dest) throws IOException {
//创建流对象
BufferedWriter bufw = null;
try{
bufw=new BufferedWriter(new FileWriter(dest));
//迭代集合
for(File file : list){
bufw.write(file.getAbsolutePath());
bufw.newLine();
bufw.flush();
}
}finally{
if(bufw!=null)
try {
bufw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 对指定目录进行递归,将符合filter过滤条件的的file对象存储到集合中。
*
*/
public static void getFileList(File dir, FileFilter filter, List<File> list) {
File[] files = dir.listFiles();
if(files!=null){
for(File file : files){
if(file.isDirectory()){
getFileList(file,filter,list);
}else{
if(filter.accept(file));{
list.add(file);
}
}
}
}
}
}
作者:
赵永康
时间:
2012-9-19 23:54
//创建制定目录中的.java文件到制定文件中
import java.io.*;
import java.util.*;
class FileList
{
public static void main(String[] args)throws IOException
{
File dir=new File("E:\\java总结");
List<File> list=new ArrayList<File>();
writeToList(dir,list);
File file=new File(dir,"FileList.java");
writeToFile(list,file.toString());
}
public static void writeToList(File dir,List<File> list)//将目录存到集合中
{
File[] files = dir.listFiles();
for(File file:files)
{
if(file.isDirectory())
writeToList(file, list);
else
{
if(file.getName().endsWith(".java"))
list.add(file);
}
}
}
public static void writeToFile(List<File> list,String name)throws IOException
//将集合中的元素存诸到文件中
{
BufferedWriter bufw=new BufferedWriter(new FileWriter(name));
for(File files:list)
{
String path=files.getAbsolutePath();
bufw.write(path);
bufw.newLine();bufw.flush();
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2