File 操作
在整个io包中,唯一表示与文件本身有关的类就是File类。使用File类可以进行创建或删除文件等常用操作,要想使用File类,则首先要观察File类的构造方法,此类的常用构造方法如下:

File类中的主要方法和常量:
|
方法或常量 |
类型 |
描述 |
|
public static final String pathSeparator |
常量 |
表示路径的分隔符(windows:‘;’) |
|
public static final String separator |
常量 |
表示路径分隔符(windows:‘\’) |
|
public File(String pathname) |
构造 |
创建File类对象,传入完整的路径 |
|
public boolean createNewFile() throws IOException |
普通 |
创建新文件 |
|
public boolean exists() |
普通 |
判断文件是否存在 |
|
public boolean delete() |
普通 |
删除文件 |
|
public boolean isDirectory() |
普通 |
判断给定的路径是否是一个目录 |
|
public long length() |
普通 |
返回文件的大小 |
|
public String[] list() |
普通 |
列出指定目录的全部内容,只是名称 |
|
public File[] listFiles() |
普通 |
列出指定目录的全部内容,会列出路径。 |
|
public boolean mkdir() |
普通 |
创建一个目录 |
|
public boolean renameTo(File dest) |
普通 |
为已有的文件重命名 |
下面我们将针对主要方法进行讲解和代码示例演练:
1)File 常量
package com.pony1223.file;
import java.io.File;
/**
* 两个常量
* 1、路径分隔符 ;
* 2、名称分隔符 /(windows) /(linux 等)
* @author Pony
*
*/
public class Demo01
{
public static void main(String[] args)
{
System.out.println(File.pathSeparator);
System.out.println(File.separator);
String path = "E:\\study\\java\\HelloWorld.java";
String path1 = "E:"+File.separator+"study"+File.separator+"java"+File.separator+"HelloWorld.java";
String path2 = "E:/study/java/HelloWorld.java";//推荐方式
}
}
2)使用绝对路径和相对路径构造文件File类
package com.pony1223.file;
import java.io.File;
/**
* 两个常量
* 1、路径分隔符 ;
* 2、名称分隔符 /(windows) /(linux 等)
* @author Pony
*
*/
public class Demo02
{
public static void main(String[] args)
{
String parentPath = "E:/study/java";
String name = "HelloWorld.java";
//相对路径
File src =new File(parentPath,name);
src =new File(new File(parentPath),name);
//输出
System.out.println(src.getName());
System.out.println(src.getPath());
//绝对路径
src =new File("E:/study/java/HelloWorld.java");
System.out.println(src.getName());
System.out.println(src.getPath());
//没有盘符: 以 user.dir构建
src =new File("test.txt");//使用相对路径,注意如果在路径中没有盘符,文件则放在工程项目下
//src =new File(".");
System.out.println(src.getName());//test.txt
System.out.println(src.getPath());//test.txt
System.out.println(src.getAbsolutePath());//G:\DevelopeHome\MyEclipseWorkSpace\Collections\test.txt
/**
* getPath:如果构建文件路径是绝对路径则返回完整路径,否则返回相对路径
* getAbsolutePath:返回绝对路径(完整路径)
* getCanonicalPath:不但是全路径,而且把..或者.这样的符号解析出来。
*/
}
}
3)判断文件(true/false)
//判断文件是否存在
System.out.println(f.exists());//true
//判断文件是否可读,可写canWrite()
System.out.println(f.canRead());//true
//判断文件路径是否为绝对路径,有盘符则为绝对路径
System.out.println(f.isAbsolute());//true
//判断是文件isFile还是文件夹isDirectory
System.out.println(f.isDirectory());//false
4)返回文件长度,以字节为单位
假设文件内容为aswdwdad,长度为8个字节,注意如果是文件夹,字节数不为0,这里也返回0 即 只有文件才能读出长度,文件夹不可
|
1
|
System.out.println(f.length());//8 |
5)创建和删除文件
(1)创建文件createNewFile()
若文件已经存在,则创建会返回false,若文件名为操作系统关键字,比如con,也会返回false
(2)删除文件delete()
File f=new File("F:/Java/test.txt");
if(!f.exists()){
try {
boolean flag = f.createNewFile();
System.out.println(flag?"success":"fail");//fail
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
f.delete();
6)两个静态方法创建临时文件

File f1=File.createTempFile("wees", ".temp",new File("F:/JAVA"));
//F:\JAVA\wees7063380687067821023.temp
System.out.println(f1.getAbsolutePath());
File f2=File.createTempFile("wes", ".temp");
//C:\Users\wwyDEPP\AppData\Local\Temp\wes8047158297297613408.temp
System.out.println(f2.getAbsolutePath());
注意点;
当我们创建一个新的File对象,所给的路径不是根盘路径时,文件会自动放在项目文件夹下;但是使用静态方法创建一个临时文件,所给路径不是根盘路径时,文件是放在C盘下的某文件夹下的
7)操作目录
(1)mkdir()创建目录,确保父目录存在,如果不存在,创建失败
(2)mkdirs()创建目录,如果父目录链不存在,一同创建
(3)list()输出目录文件夹下所包括的文件名
(4)listFiles()输出目录文件夹下所包括的文件
(5)listFiles(filter)输出目录文件夹下所包括的特定文件(.txt)
String path="F:/Picture/test";
File file=new File(path);
file.mkdir();
System.out.println("输出目录文件夹下所包括的文件名");
String path2="F:/Picture";
File file2=new File(path2);
if(file2.isDirectory()){
String[] strs=file2.list();
for(String s:strs){
System.out.println(s);
}
}
System.out.println("输出目录文件夹下所包括的文件");
if(file2.isDirectory()){
File[] files=file2.listFiles();
for(File f:files){
System.out.println(f.getAbsolutePath());
}
}
System.out.println("输出目录文件夹下所包括的特定文件(.txt),命令设计模式");
if(file2.isDirectory()){
File[] files=file2.listFiles();
files=file2.listFiles(new FilenameFilter(){
@Override
public boolean accept(File dir, String name) {
return new File(dir,name).isFile()&&name.endsWith(".txt");
}
});
for(File f:files){
System.out.println(f.getAbsolutePath());
}
}
结果:
输出目录文件夹下所包括的文件名 EFI.png NTFS.png test test.txt 输出目录文件夹下所包括的文件 F:\Picture\EFI.png F:\Picture\NTFS.png F:\Picture\test F:\Picture\test.txt 输出目录文件夹下所包括的特定文件(.txt),命令设计模式 F:\Picture\test.txt

浙公网安备 33010602011771号