File类的常见方法:
1.创建
boolean createNewFile();在指定位置创建文件,如果该文件已经存在,则不创建,返回false
和输出流不一样,输出流对象一建立就创建文件,而且文件已经存在,会覆盖
boolean mkdir();创建文件夹
boolean mkdirs();创建多级文件夹
2.删除
boolean delete();删除失败返回false
void deleteOnExit();在程序退出时删除指定文件
3.判断
boolean exists();文件是否存在
isFile();
isDirectory();
isHidden();
isAbsolute();
4.获取信息
getName();
getPath();
getParent();
getAbsolutePath();
lastModified();
length();
方法操作的例子:
1.创建
boolean createNewFile();在指定位置创建文件,如果该文件已经存在,则不创建,返回false
和输出流不一样,输出流对象一建立就创建文件,而且文件已经存在,会覆盖
boolean mkdir();创建文件夹
boolean mkdirs();创建多级文件夹
2.删除
boolean delete();删除失败返回false
void deleteOnExit();在程序退出时删除指定文件
3.判断
boolean exists();文件是否存在
isFile();
isDirectory();
isHidden();
isAbsolute();
4.获取信息
getName();
getPath();
getParent();
getAbsolutePath();
lastModified();
length();
方法操作的例子:
import java.io.File;
import java.io.IOException;
public class FileDemo {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
method_5();
}
public static void method_5() {
File f1=new File("D:\\a\\a.txt");
File f2=new File("D:\\b\\haha.txt");
System.out.println("remover:::"+f1.renameTo(f2));
}
public static void method() {
//将a.txt封装成file对象,可以将已有的和未出现的文件或者文件夹封装成对象
File f=new File("D:\\a\\a.txt");
File f1=new File("D:\\a","b.txt");
File d=new File("D:\\a");
//分隔符跨平台
File d1=new File("D:"+File.separator+"abc.txt");
File f2=new File(d,"c.txt");
System.out.println(f+"..."+f1+"..."+f2+"..."+d+"..."+d1);
}
public static void method_1() throws IOException{
File f=new File("D:\\b\\chen.txt");
f.deleteOnExit();
// boolean b=f.createNewFile();
// System.out.println(b);
System.out.println(f.delete());
}
public static void method_2(){
File f=new File("D:\\a\\c.txt");
// System.out.println(f.canExecute());
System.out.println(f.exists());
File dir=new File("D:\\b\\dir");
System.out.println("dir:::"+dir.mkdir());;
}
public static void method_3() throws IOException{
File f=new File("D:\\a\\ooo.txt");
f.mkdir();
//在判断文件对象是否是文件或者是目录时,必须要先判断该文件对象封装的内容是否存在
//通过exists()判断
System.out.println("dir:::"+f.isDirectory());
System.out.println("fle:::"+f.isFile());
System.out.println("absolute:::"+f.isAbsolute());
}
public static void method_4(){
File f=new File("a.txt");
System.out.println("paht:"+f.getPath());
System.out.println("absolute:"+f.getAbsolutePath());
System.out.println("parent:"+f.getParent());//该方法返回的是绝对路径中的父目录。如果获取的是相对路径,返回null
//如果相对路径中有上一层目录那么该目录就是返回结果
}
}
遍历某个目录下面的所有文件,并将文件名输出
import java.io.File;
public class FileDemo3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
File dir=new File("E:\\My_JAVA\\");
showDir(dir);
}
static StringBuilder sb=new StringBuilder("|--");
public static void showDir(File dir){
System.out.println(sb.toString()+""+dir);
//获取文件夹下的所有文件
File []files=dir.listFiles();
for(int x=0;x<files.length;x++)
{
//如果是目录,递归调用此方法
if(files[x].isDirectory())
{
sb.insert(0, ' ');
showDir(files[x]);
}
else//如果不是目录输出文件名
System.out.println(files[x]);
}
}
}
删除一个带内容的目录
删除原理:
在window中,删除目录从里面往外面删除的
既然从里往外删,就需要用到递归
删除原理:
在window中,删除目录从里面往外面删除的
既然从里往外删,就需要用到递归
import java.io.File;
/*删除一个带内容的目录
删除原理:
在window中,删除目录从里面往外面删除的
既然从里往外删,就需要用到递归
*
*/
public class RemoveDir {
public static void main(String[] args) {
// TODO Auto-generated method stub
File dir=new File("E:\\a");
removeDir(dir);
}
public static void removeDir(File dir){
//获取文件夹下的所有文件
File [] files=dir.listFiles();
for(int i=0;i<files.length;i++){
//如果是目录递归调用此方法
if(files[i].isDirectory())
removeDir(files[i]);
else//如果是文件,删除文件,并输出删除的信息
System.out.println(files[i].toString()+"::"+files[i].delete());
}
//删除文件
System.out.println(dir+"---dir::"+dir.delete());
}
}
练习:
将一个指定目录下的java文件的绝对路径,存储到一个文本文件中
建立一个java文件列表文件
思路:
1.对指定目录进行递归
2.获取递归过程中所有的java文件的路径
3.将这些集合存储到集合中
4.将集合中的数据写入到一个文件中
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class JavaFileList {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
File dir=new File("E:\\a");
//创建集合对象
List<File> list=new ArrayList<File>();
fileToList(dir,list);
// System.out.println(list.size());
writeToFile(list,"E:\\a\\list.txt");
}
public static void fileToList(File dir,List<File> list){
File[] files=dir.listFiles();
for(File f:files)
{
if(f.isDirectory())
{
fileToList(f,list);
}
else{
if(f.getName().endsWith(".java"))
list.add(f);
}
}
}
public static void writeToFile(List<File> list,String javalist) throws IOException
{
BufferedWriter bufw=new BufferedWriter(new FileWriter(javalist));
for(File f:list)
{
String path=f.getAbsolutePath();
bufw.write(path);
bufw.newLine();
bufw.flush();
}
bufw.close();
}
}