----------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
/*
列出指定目录下文件或文件夹,包含子目录中的内容
也就是列出指定目录下所有内容
因为目录中还有目录,只要使用同一个列出目录功能的函数完成即可
在列出过程中出现的还是目录的话,可以再次调用本功能。
也就是函数自身调用自身
这种表现形式,或者编程手法,称为递归
递归要注意:
1.限定条件
2.要注意递归的次数,尽量避免内存溢出
*/
import java.io.*;
class FileDemo3
{
public static voidmain(String[] args)
{
//showDir(newFile("D:\\java0217"));
toBin(6);
}
public static void toBin(int num)
{
/*
while(num>0)
{
System.out.println(num%2);
num/=2;
}*/
if(num>0)
{
toBin(num/2);
System.out.print(num%2);
}
}
public static boolean showDir(File dir)
{
if(!dir.exists())
returnfalse;
System.out.println(dir);
File[]names=dir.listFiles();
for(Filename:names)
{
if(name.isDirectory())
showDir(name);
else
System.out.println(name+"..."+name.length());
}
return true;
}
}
带层级目录
import java.io.*;
class FileDemo3
{
public static voidmain(String[] args)
{
showDir(newFile("D:\\java0217"),0);
}
public static StringgetLevel(int level)
{
StringBuildersb=new StringBuilder();
for(intx=0;x<level;x++)
{
sb.append(" ");
}
returnsb.toString();
}
public static booleanshowDir(File dir,int level)
{
if(!dir.exists())
returnfalse;
System.out.println(getLevel(level)+dir);
level++;
File[]names=dir.listFiles();
for(Filename:names)
{
if(name.isDirectory())
showDir(name,level);
else
System.out.println(getLevel(level)+name+"..."+name.length());
}
return true;
}
}
/*
删除一个带内容的目录
删除原理
在windows中,删除目录从里面住外删除的
既然是从里住外删除,就需要用到递归
*/
import java.io.*;
class RemoveDir
{
public static voidmain(String[] args)
{
removeDir(newFile("D:\\1"));
}
public static boolean removeDir(File dir)
{
if(!dir.exists())
returnfalse;
File[]files=dir.listFiles();
for(Filefile:files)
{
if(file.isDirectory())
removeDir(file);
else
System.out.println(file+"...file..."+file.delete());
}
System.out.println(dir+"...dir..."+dir.delete());
return true;
}
}
**************************************************************************************
/*
练习
将一个指定目录下的java文件的绝对路径,存储到一个文本文件中
建立一个java文件列表清单文件
思路:
1.对指定目录进行递归
2.在递归过程中获取java文件绝对路径
3.将这些路径存储到集合中
4.将集合中的数据写入到一个文件中
*/
import java.io.*;
import java.util.*;
class JavaFileList
{
public static void main(String[] args)
{
File dir=newFile("D:\\java0217");
List<File>list=new ArrayList<File>();
fileToList(dir,list);
System.out.println(list.size());
File file=newFile(dir,"javalist.txt");
listToFile(list,file.toString());
}
public static void fileToList(File dir,List<File> list)
{
if(!dir.exists())
throw newRuntimeException("目录为空");
File[]files=dir.listFiles();
for(Filefile:files)
{
if(file.isDirectory())
fileToList(file,list);
else
{
if(file.getName().endsWith(".java"))
list.add(file);
}
}
}
public static void listToFile(List<File> list,String javaListFile)
{
BufferedWriterbufw=null;
try
{
bufw=newBufferedWriter(new FileWriter(javaListFile));
for(Filefile:list)
{
bufw.write(file.getAbsolutePath());
bufw.newLine();
bufw.flush();
}
}
catch(IOException e)
{
throw newRuntimeException("写入失败");
}
finally
{
try
{
if(bufw!=null)
bufw.close();
}
catch(IOException e)
{
thrownew RuntimeException("写入关闭失败");
}
}
}
}
----------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------