Java之File类
2016-09-11 本文已影响272人
998584f56259
Java File类的功能非常强大,利用Java基本上可以对文件进行所有的操作。本文将对Java File文件操作类进行详细地分析,并将File类中的常用方法进行简单介绍。
File类用于封装一个路径,这个路径可以是从系统盘符开始的绝对路径,如D:\file\a.txt,也可以是相对于当前目录而言的相对路径,如src\Hello.java。File类内部封装的路径可以指向一个文件,也可以指向一个目录,在File类中提供了针对这些文件或目录的一些常规操作。
1、构造函数
public class Example5 {
public static void main(String[] args){
//1、构造函数:File(String pathname)
File f1 =new File("\\abc\\1.txt");
//2、构造函数:File(String parent,String child)
File f2 =new File("c:\\abc","2.txt");
//3、构造函数:File(File parent,String child)
File f3 =new File("c:"+File.separator+"abc");//separator 跨平台分隔符
File f4 =new File(f3,"3.txt");
System.out.println(f1);//c:\abc\1.txt
}
}
2、createNewFile()方法
/**
* createNewFile();方法
* 1:首先需要有一个File对象实例,并且是在一个已存在的文件夹下面(不能是没有abd文件夹,然后d:\\abd\\1.txt创建)
* 2:如果该文件已存在则返回false,不存在就返回true。
*/
public class Example6 {
public static void main(String[] args) {
try {
//1、构造函数:File(String pathname)
File f1 =new File("d:\\1.txt");
f1.createNewFile(); //不存在返回true 存在返回false
} catch (IOException e) {
e.printStackTrace();
}
}
}
3、mkdir()和mkdirs()方法
/**
* mkdir(); :创建一级目录,创建成功就返回true,否则返回false。
* mkdirs();:创建多级目录,创建成功就返回true,否则返回false。
*/
public class Example7 {
public static void main(String[] args) {
File f1 =new File("d:\\abc");
f1.mkdir();
File f2 =new File("d:\\abd\\lei");
f2.mkdirs();
}
}
4、delete()和deleteOnExit()方法
/**
* 1、delete():删除一个文件,文件存在时删除返回true,文件不存在返回false。
* 2、deleteOnExit():文件使用完成后删除(它不会立刻删除后面可以继续使用,当在JVM终止时删除)
*/
public class Example8 {
public static void main(String[] args) {
try {
File f =new File("d:\\1.txt");
System.out.println(f.createNewFile());//当文件存在时返回false
// System.out.println(f.delete());//当文件不存在时返回false
f.deleteOnExit();//文件使用完成后删除
} catch (IOException e) {
e.printStackTrace();
}
}
}
5、常用判断方法1
public class Example9 {
public static void main(String[] args) {
File f =new File("d:\\1.txt");
try {
System.out.println(f.createNewFile());//当文件存在时返回false
System.out.println(f.canExecute());//判断文件是否可执行
System.out.println(f.canRead());//判断文件是否可读
System.out.println(f.canWrite());//判断文件是否可写
System.out.println(f.exists());//判断文件是否存在
System.out.println(f.isDirectory());//判断是否是目录
System.out.println(f.isFile());//判断是否是文件
System.out.println(f.isHidden());//判断是否是影藏
System.out.println(f.isAbsolute());//检查此抽象路径名是否是绝对的。
} catch (IOException e) {
e.printStackTrace();
}
}
}
6、常用判断方法2
/**
* false
* 1.txt
* d:\1.txt
* d:\
* 1473497868613
* 0
*/
public class Example10 {
public static void main(String[] args) {
File f =new File("d:\\1.txt");
try {
System.out.println(f.createNewFile());//当文件存在时返回false
System.out.println(f.getName());//获取文件名
System.out.println(f.getPath());//获取路径+文件名
System.out.println(f.getParent());//如果没有父目录返回null
System.out.println(f.lastModified());//获取最后一次修改的时间
System.out.println(f.length());//0
} catch (IOException e) {
e.printStackTrace();
}
}
}
7、listRoots()和list()方法
/**
file:C:\
filename:WGC95folder
filename:Windows
filename:Windows.old
filename:Windows10Upgrade
file:D:\
filename:Program Files
filename:Program Files (x86)
filename:娱乐休闲
filename:学习工作
filename:迅雷下载
file:F:\
*/
public class Example11 {
public static void main(String[] args) {
File[] files =File.listRoots();//获取机器盘符
for(File file:files){
System.out.println("file:"+file);
if(file.length()>0){
String[] filenames =file.list();//获取盘符下的文件列表
for(String filename:filenames){
System.out.println("filename:"+filename);
}
}
}
}
}
8、过滤
public class Example12 {
public static void main(String[] args) {
File[] files =File.listRoots();
for(File file:files){
System.out.println(file);
if(file.length()>0){
String[] filenames =file.list(new FilenameFilter(){
//file 过滤目录 name 文件名
public boolean accept(File file,String filename){
return filename.endsWith(".mp3");
}
});
for(String filename:filenames){
System.out.println(filename);
}
}
}
}
}
9、递归列出全部文件
/**
利用递归列出全部文件
*/
public class Example13 {
public static void main(String[] args){
File f =new File("d:\\diff");
showDir(f);
}
public static void showDir(File dir){
System.out.println("第一级:"+dir);
File[] files =dir.listFiles();
for(File file:files){
if(file.isDirectory())
showDir(file);
else
System.out.println("第二级:"+file);
}
}
}
10、替换文件
/**
* 找出d盘下所有的 .java 文件,拷贝至 c:\jad 目录下,并将所有文件的 类型由.java 修改为.jad
*/
public class Example14 {
public static void main(String[] args){
File f1 = new File("d:\\");
moveFile(f1);
}
public static void moveFile(File dir){
File[] files=dir.listFiles();
System.out.println("第一级:"+files[0]);
for(File file:files){
if(file.isDirectory())
moveFile(file);
else{
if(file.getName().endsWith(".java"))
file.renameTo(new File("c:\\jad\\"+
file.getName().substring(0,file.getName().lastIndexOf('.'))+".jad"));
}
}
}
}