您的位置:首页 > 编程语言 > Java开发

Java day10 IO 列出文件下的所有层级文件名 待修改

2016-03-25 11:57 495 查看
//需求:列出指定路径下的所有层级文件目录,并将该目录写入文件

//注意!!执行写入时在write()后必须写flush()或者close(),将流数据刷入文件,否则数据永远存在流中
//递归 你的问题是经常想把处理值与输出值分离,使用return不灵活
//若递归方法中有每次调用都会发生变化的值,那么把它提到形参列表里
import java.io.*;
class FileDemo
{
public static void constMethod()
{
//构造方法,将已存在或不存在的路径名实例化为对象
//目录名
File d=new File("d:"+File.separator);//File.separator是目录分隔符,windows中 \\
//目录名 文件名
File f2=new File(d,"psb.jpg");
//	System.out.println("file name :"+f2+Long.MAX_VALUE);
}

//待修改
public static void createFile()throws IOException
{
//在指定位置创建文件,返回boolean型,文件已存在,则返回false
File f=new File("E:\\代码\\day11\\newfile.txt");
f.createNewFile();
//临时文件
File d=new File("d:"+File.separator);
File f1=f.createTempFile("2哈哈哈",".txt",d);
System.out.println(f.length());
f1.delete();
System.out.println(f.exists());
System.out.println(f.isFile());
//listPath();

}
public static void main(String[] args) throws IOException
{
constMethod();
createFile();
//	list(new File("e:"));//指定路径(根)与当前默认路径处于同一根目录下,以当前路径为准
//	listEqual();

File f=new File("F:\\电影");
FileWriter fw = new FileWriter(f.toString()+"\\list of movies.txt",false);
recursShow(f,fw,0);
fw.close();
//System.out.println(f.getAbsolutePath());
}
}
public static void listEqual()throws IOException
{//列出指定文件类型的文件目录
File dir=new File("E:\\代码\\day08");

//待修改
String []arr=dir.list(new FilenameFilter()//过滤器
{//复写FilenameFilter接口的accept方法——匿名内部类
public boolean accept(File dir,String name)
{
return name.endsWith(".java");
}
});
System.out.println("共找到文件"+arr.length+"个");

for(String name:arr)
{//增强for循环
System.out.println(name);
}

}
public static void recursShow(File dir,FileWriter fw,int level)throws IOException
{//递归:列出指定路径下的所有层级文件目录,并将该目录写入文件
if(dir.exists())
{
System.out.println(getLevel(level)+dir);
fw.write(getLevel(level)+dir+"\r\n");

level++;
//返回对象目录下的所有文件对象
File[] files=dir.listFiles();
for(int i=0;i<files.length;i++)
{
if(files[i].isDirectory())//&&!dir.isHidden())
{
recursShow(files[i],fw,level);//递归调用该方法
}
else
{
System.out.println(getLevel(level)+files[i]);
fw.write(getLevel(level)+files[i].getName()+"\r\n");
//fw.flush(); 注意!!执行写入时在write()后必须写flush()或者close(),将流数据刷入文件,否则数据永远存在流中
}
}
}
}
public static void list(File f)
{//列出f下的所有文件目录
String[] filenames=f.list();
//增强for循环——for(接收的数据类型 变量名:容器)
for(String filename:filenames)
System.out.println(filename);
}

public static String getLevel(int level)
{//文件目录列表格式控制
StringBuilder sb=new StringBuilder();
sb.append("|--");//在右面插入
for(int i=0;i<level;i++)
sb.insert(0,"   ");//在左面插入
return sb.toString();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: