File:
File file = new File(“c:\\”,“1.txt”):表示可以将一个已存在或者不存在的文件或者目录封装成file对象。
File file = new File(“c:\\nihao\\1.txt”):表示系统分隔符:+System.getProperty(“file.separator”)+
而现在则是:file.separator字符串类型,file.separatorChar字符类型。系统默认名称分隔符。(;:路径分隔符)
File类常见方法:
1,创建。boolean createNewFile();在指定位置创建文件,如果存在该文件则创建失败返回false。
和输出流不一样,输出流建立则是覆盖[强制建立]。(临时文件创建..)
注意:
File file = new File(“adn”);//创建目录:file.mkdir();一级file.mkdirs();多级。boolean类型。
File file = new File(“abd.txt”)//创建文件
2,删除
boolean delete();删除调用此方法的文件对象。
boolean deleteOnExit();同上。在退出系统时删除指定文件。(一般使用在临时文件)。
3,判断
boolean canExecute();判断文件是否可执行。
intcompareTo();比较
boolean exists();文件是否存在[使用频率很高,文件存在了才可以使用流,不然就会抛出异常]
isFile();isDirectory();对一个文件的判断是文件或目录时,必须判断是否存在。
isHidden();是否隐藏。Java在取文件时不判断是不是隐藏,所以程序员需要判断。。
isAbsolute();判断是否为绝对路径。[不判断文件是否存在]
4,获取信息
getName();getPath(); getAbsolutePath();[路径和文件是否存在无关]length();[返回为long]
lastModified();获取最后一次修改的时间;返回为long,毫秒值。
getParent();//返回的是绝对路径中的父目录[调用者上一层的目录]。不然返回为null。
f1.renameTo(f2);返回为boolean,类似不同文件里时剪贴。
listRoots(),获取盘符,单个。
list();获取指定目录下的所有文件以及文件夹,还含有隐藏文件。。路径不对则为null。
listFiles();返回为File[]对象数组,可操作。开发使用这个。
List(FilenameFilter filter);文件名过滤器FilenameFilter是接口,实现它的实例可以过滤..
File dir=new File(“d:\\java123\\day23”);
String[]arr=dir.list(new FIlenameFilter(){
public boolean accept(File dri,String name){
SOP(dir+” ”+name);
return name.endWith(“.bmp”);
}
});//匿名类的使用,和dir,name都是什么都可以知道。
/*列出指定目录下文件或者文件夹,包含子目录中的内容。即指定目录下的所有内容*/
main(){Filedir=new File(“d:\\java1233”) showDir(dir);}
public static voidshowDir(File dir){
SOP(dir);
File[] files=dir.listFiles();
fFor(int x=0;x<files.length;x++){
if(files[x].isDirectory())//判断每一个files[x]是不是目录,是就再次调用自己。递归!
showDir(files[x]);
else SOP(files[x]);
}} 增加”|--”,好看显示。<20天08视频>
递归:1,限定条件,也就是判断是否进行递归的条件。
void showA(){showB();Sop(A);} 求和:getSum(int n){if(n==1)
void showB(){showC();Sop(B);} return1;
void showC(){Sop(C);}//调用A return n+getSum(n-1);}//递归会出现内存溢出
2,要注意递归的次数,避免内存溢出。
/*删除一个带有内容的目录,删除原理:从里往外删。递归使用。*/
C盘里的隐藏文件是不能被java访问。
public static voidremoveDir(File dir){File[] files=dir.listFiles();
for(intx=0;x<files.length;x++){
if(!files[x].isHidden()&&files[x].isDirectory()) removeDir(files[x]);//避开隐藏
else System.out.println(files[x].toString()+”....”+files[x].delete());
}System.outprintln(dir+”....dir....”+dir.delete());}
/*讲一个指定目录下的java文件的绝对路径,存储到一个文本文件中*/
思路:1,对指定的目录进行递归2,获取递归过程所得的java文件的路径3,将这些路径存储到集合中。4,将集合中的数据写入到一个文件中。[玩递归来一方法,存文件,对文件进行操作]
class mingcheng {
publicmain(){ File dir = new File(“d:\\java”); List<File> list=newArrayList<File>();
fileToList(dir,list);Sop(list.size());/将集合[源],写到本地硬盘中。
File file = newFile(dir,“javalist.txt”);
writeToFile(list,file.toString());}//下方法演示。这里字符串可以,file对象也可以的。
public static voidfileToList(File dir,List<File> list){
File[] files = dir.listFiles();
for(File file : files){
if(file.isDirectory()) fileToList(file,list);
else{if(file.getName().endWith(“.java”)) list.add(file);}
}}}
-------------------------------------------------------------------------------------------------------------
publicstatic void writeToFile(List<FIle> list,StringjavaListFile) throws IOException{
BufferedWriterbufw=null;
try{
Bufw=new BufferedWriter(new FileWriter(javaListFile));
for(File f : list){
String path = f.getAbsolutePath();
bufw.write(path);
bufw.newLine();
bufw.flush(); }
catch(IOException e){throw e;}//不想抛,可以抛RuntimeException;
finally{ try{
if(bufw!=null) bufw.close();
}catch(IOException e){throwe;}}}}