学习IO最基础的就是学FIle类,学file类以下几个操作一定得知道
1.获取文件路径信息
/**
* 获取文件路径信息
*/
public static void getPath() {
// 建立 file 类与系统的联系
// new File("D:/zzq/zzq.txt"); => 绝对路径
// new File("zzq/zzq.txt"); => 相对路径
File file = new File("zzq.txt");
//返回名称
System.out.println( file.getName() );
//如果是绝对路径,则返回绝对路径,如果是相对路径,则返回相对路径
System.out.println( file.getPath() );
//返回上一级目录,如果是相对路径,且该文件为一级目录,则返回 null
System.out.println( file.getParent() );
}
2.获取文件基本信息
/**
* 获取文件信息
*/
public static void getInfo() {
File file = new File("db.properties");
// 存在则为 true,不存在就为 false
System.out.println( "是否为存在:" + file.exists() );
// 目录则为 true,文件则为 false
System.out.println( "是否为文件夹:" + file.isDirectory() );
// 文件则为true,目录则为 false
System.out.println( "是否为文件:" + file.isFile() );
// 可读则为true
System.out.println( "是否可读:" + file.canRead() );
// 可写则为true
System.out.println( "是否可写:" + file.canWrite() );
// 绝对路径则为true
System.out.println( "是否为绝对路径:" + file.isAbsolute() );
// 文件长度,当为文件夹时返回 0
System.out.println( "该文件长度:" + file.length() );
}
3,操作文件,如代码所示,show code
/**
* 文件的操作
* @throws IOException
* @throws InterruptedException
*/
/**
* @throws IOException
* @throws InterruptedException
*/
public static void operat() throws IOException, InterruptedException {
String path = "D:/file/webupload/";
File file = new File( path + "zzq.txt");
System.out.println( file.getAbsolutePath() );
// 判断其父级目录是否存在,不存在则创建
if( ! new File(file.getParent()).exists() ) {
//创建文件夹
// mkdir 与 mkdirs 的区别
// mkdir 创建目录的时候父目录如果不存在则创建失败
// mkdirs 创建目录的时候就不会有这个问题,mkdirs 默认创建文件夹
new File(file.getParent()).mkdirs();
}
System.out.println( file.getAbsolutePath() );
try {
// 创建文件
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 删除文件,返回 true or false
file.delete();
// 建立缓存文件
File.createTempFile("tem", ".jpg" );
// 测试当路径为相对路径的时候,.list(),.listFile() 获取不到值
File file2 = new File("");
file2 = new File( file2.getAbsolutePath() );
// 获取该路径下的所有文件/文件夹 的名字
String[] list = file2.list();
for (String string : list) {
System.out.println( string );
}
// 获取该路径下的所有文件及文件对象
File[] listFiles = file2.listFiles();
for (File file3 : listFiles) {
System.out.println( file3.getName() );
}
// 文件名称过滤
File[] file3 = file2.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
// 输出名字里面带 b 而且为文件的 文件
return new File(dir, name).isFile() && name.indexOf("b")!=-1;
}
});
System.out.println("过滤后的文件");
// 过滤后的文件
for (File file4 : file3) {
System.out.println( file4.getName() );
}
}