今天我们学习一下java中的File类
相应的API文档:File类
以下是本人做的一些整理:
File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。 |
File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。 |
File(String parent, String child) 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。 |
File(URI uri) 通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。 |
一:File类的方法详解
File file1 = new File ("C://temp//myNote.txt"); // in Windows 这是windows文件系统下的方法
File file2 = new File ("/tmp/myNote.txt"); // in Linux/Unix unix文件系统的方法
在不同的操作系统中,文件之间的分隔符表示方式不一样的,为了安全起见,我们可以使用File.separator来表示分隔符
最安全的建立文件的方法:
File myFile = new File("C:" + File.separator + "jdk1.5.0" + File.separator, "File.java");
提醒:File.separator 表示的是文件路径符号。
常用方法介绍:
System.out.println(myFile.getName());//取得文件名称的方法
System.out.println(myFile.getPath());//取得文件路径的方法
System.out.println(myFile.isAbsolute());//判断文件是否完整
System.out.println(myFile.getParent());//取得文件的根目录
System.out.println(myFile.exists());//判断文件是否存在
System.out.println(myFile.isDirectory());//判断是否是目录
System.out.println(myFile.isFile());//判断是否是文件
System.out.println(myFile.isHidden());//判断是否是隐藏文件
System.out.println(myFile.canRead());//判断是否可读
System.out.println(myFile.canWrite());//判断是否可写
File myFile_C=new File("d:/test.txt");
System.out.println(new Date(myFile_C.lastModified()));//最后一次编辑时间
myFile_C.renameTo(new File("c:/text.txt.bak"));//重新命名此抽象路径名表示的文件。
myFile_C.setReadOnly();//设置为只读
二:File类的实例应用
1. 创建文件和目录
编写代码创建一个目录E:\test,下面含有两个文件1.txt,2.txt 和一个目录dir,dir目录下有两个文件3.txt和4.txt
<span style="font-family:SimSun;font-size:18px;"> public static void createDirectory(){
System.out.println("**********************");
File f=new File("E:"+File.separator+"test"); //File.separator为文件分隔符,在windows下为\
System.out.println("create directory...");
f.mkdir(); //创建目录
File file1=new File(f,"1.txt"); //在目录test下创建两个文件
File file2=new File(f,"2.txt");
try {
file1.createNewFile();
file2.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} //创建文件
File f2=new File(f,"dir"); //在目录test下创建目录dir
f2.mkdir();
File file3=new File(f2,"3.txt"); //创建文件
File file4=new File(f2,"4.txt");
try {
file3.createNewFile();
file4.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//测试创建的File对象:是文件还是文件夹
System.out.println("f is file? " +f.isFile()); //false
System.out.println("f is directory? "+ f.isDirectory()); //true
System.out.println("file1 is file? " +file1.isFile()); //true
System.out.println("file2 is file? " +file1.isFile()); //true
System.out.println("f2 is file? " +f.isFile()); //false
System.out.println("f2 is directory? "+ f.isDirectory()); //true
System.out.println("file3 is file? " +file1.isFile()); //true
System.out.println("file3 is file? " +file1.isFile()); //true
}</span>
2. 列出目录下所有的文件名
编写一个程序,在命令行中以树状结构展示特定的文件夹及其子文件(夹)。(使用递归来实现)
public class FileTree {
public static void main(String[] args) {
//找一个自己硬盘上有用的文件夹
File f = new File("e:/test");
printFile(f, 0);
}
//树状结构打印
static void printFile(File file,int level){
for (int i = 0; i < level; i++) {
System.out.print("-");
}
System.out.println(file.getName());
if(file.isDirectory()){
File[] files = file.listFiles();
for (File temp : files) {
printFile(temp, level+1);
}
}
}
}
显示结果:
test
-1.txt
-2.txt
-dir
--3.txt
--4.txt
3. 列出目录下所有的文件路径
编写一个程序,在命令行中以树状结构展示特定的文件夹及其子文件(夹)的路径。(使用递归来实现)
public class FileTree {
public static void main(String[] args) {
//找一个自己硬盘上有用的文件夹
File f = new File("e:/test");
printFilePath(f, 0);
}
static void printFilePath(File file,int level){
for (int i = 0; i < level; i++) {
System.out.print("-");
}
System.out.println(file.getPath());
if(file.isDirectory()){
File[] files = file.listFiles();
for (File temp : files) {
printFilePath(temp, level+1);
}
}
}
}
显示结果:
e:\test
-e:\test\1.txt
-e:\test\2.txt
-e:\test\dir
--e:\test\dir\3.txt
--e:\test\dir\4.txt
4. 删除一个文件(包含文件里的目录)
<span style="font-family:SimSun;font-size:18px;">public class FileDeleteAllFile {
public static void main(String[] args) {
//找一个自己硬盘上有用的文件夹
File f = new File("e:/test");
deleteAll(f);
}
public static void deleteAll(File file){
if(!file.exists())
return ;
//为文件或者目录为空
if(file.isFile()||file.list().length==0){
file.delete();
return;
}else{
File[] files=file.listFiles();
for(File f:files){
deleteAll(f);
}
file.delete();
}
}
}</span>
本文参考:
http://blog.csdn.net/sunxiaosunxiao/article/details/6621003
http://blog.csdn.net/Steve_wang_victor/article/details/5853387
http://blog.csdn.net/kiss_the_sun/article/details/7921050