------- android培训、java培训、期待与您交流! ----------
File类
* 用于将文件或文件夹封装成对象
* 方便对文件或文件夹的属性信息进行操作
* File对象可以作为参数传递给流的构造函数
* 常见方法:
* 1,创建
* 2,删除
演示和练习
import java.io.*;
public class FileDemo
{
public static void main(String[] args) throws IOException
{
File f=new File("1.txt");//new File对象只是指定路径和文件名,并未创建文件。
f.deleteOnExit();//退出程序时删除指定文件
System.out.println(f.createNewFile());//调用了createNewFile()才会产生新文件,创建后返回true,若已有文件则返回false
//System.out.println(f.delete());//返回boolean
//1,创建
sop(f.createNewFile());//返回boolean,如果已有文件返回false
File dir=new File("abc\\bac");
sop(dir.mkdirs());//创建路径(文件夹)
//2,删除
sop(f.delete());//删除文件
f.deleteOnExit();//退出时删除
//3,判断
sop(f.canExecute());//是否能执行
f.exists();//是否存在
f.isFile();f.isDirectory();f.isHidden();f.isAbsolute();
//4,获取信息
f.getName();f.getPath();f.getParent();f.getAbsolutePath();f.lastModified();//最后修改时间
f.length();
//f1.renameTo(f2);//把f1改成f2,不但可以改名字,还可以改路径
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
import java.io.*;
public class File_listDemo
{
public static void main(String[] args)
{
//listRootsDemo();
//listDemo();
//listDemo1();
listFileDemo();
}
//listRoots(),列出有效盘符
public static void listRootsDemo()
{
File[] files=File.listRoots();//列出有效盘符,返回的是File型数组
//高级for下
for(File file:files)
{
System.out.println(file);
}
}
//listDemo();列出指定盘下文件或文件夹名称,包含隐藏文件,返回的是字符串型数组
public static void listDemo()
{
File f=new File("f:\\");
String[] arr=f.list();
for(String s:arr)
{
System.out.println(s);//包含隐藏文件
}
}
//list(filter);可传入过滤器
public static void listDemo1()
{
File f=new File("F:\\ipod 照片\\860OKMZO");
String[] arr=f.list(new FilenameFilter()
{
public boolean accept(File f,String name)
{
return name.endsWith(".PNG");
}
});//用匿名内部类定义一个filter
for(String s:arr)
{
System.out.println(s);//包含隐藏文件
}
}
//listFile();实际开发中用,返回的是File型数组,可以 用get方法获取信息
public static void listFileDemo()
{
File f=new File("F:\\ipod 照片\\860OKMZO");
File[] arr=f.listFiles(new FilenameFilter()
{
public boolean accept(File f,String name)
{
return name.endsWith(".PNG");
}
});
for(File s:arr)
{
System.out.println(s.getName()+"::"+s.length()/*获取的是文件的大小,单位字节*/);//包含隐藏文件
}
}
}
递归:
* 列出文件目录,包含子目录中的内容
* 目录中还有目录,只要使用同一个列出目录功能的函数完成即可,可以在函数中调用本函数
* 也就是函数自身调用自身
* 这种编程手法叫
* 递归
* 递归要注意的
* 1,限定条件(要判断,比如if)
* 2,注意递归的次数,避免内存溢出。
import java.io.*;
class DiGui
{
public static void main(String[] args)
{
File dir=new File("F:\\");
method(dir);
}
public static void method(File dir)//传入要列出的目录
{
File[] files=dir.listFiles();//listFile()将目录中的文件已文件数组形式返回
for(int x=0;x<files.length;x++)
{
System.out.print(dir);
if(files[x].isDirectory())//判断是否是目录
method(files[x]);
else
System.out.println(files[x]);
}
}
//转成二进制
public static void toBin(int num)
{
if(num>0)
{
toBin(num/2);
System.out.print(num%2);
}
}
//1到某个数相加结果
public static int Sum(int num)
{
if(num==1)
return 1;
return num+Sum(num-1);
}
}
练习
/*将制定目录下所有的png文件的绝对路径信息存入到txt文件中
* */
import java.io.*;
import java.util.*;
public class Test
{
public static void main(String[] args) throws IOException
{
File f=new File("C:\\Users\\dell\\Pictures\\SkyDrive\\图片");
List<File> l=new ArrayList<File>();
getDir(f,l);
File f1=new File(f,"1.txt");
toTxt(l,f1.toString());
}
//定义递归方法获取PNG路径到集合
public static void getDir(File fi,List<File> list)
{
File[] arr=fi.listFiles();
for(File file:arr)
{
if(file.isDirectory())
getDir(file,list);
else
{
if(file.getName().endsWith(".PNG"))
list.add(file);
}
}
}
public static void toTxt(List<File> l,String a) throws IOException
{
BufferedWriter br=null;
try
{
br=new BufferedWriter(new FileWriter(a));
for(File file:l)
{
String path=file.getAbsolutePath();
br.write(path);
br.newLine();
br.flush();
}
}
catch(IOException e)
{
throw e;
}
finally
{
try
{if(br!=null)
br.close();}
catch(IOException e)
{throw e;}
}
}
}