/**
* 实例116 显示文件的基本信息
*
*/
import java.io.*;
public class FileDemo_01 {
public static void main(String[] args) {
File file = new File("E:/baidu player/keytoolcmd.txt"); // 根据指定的路径创建一个File对象
System.out.println("文件名为:" + file.getName()); // 获取该File对象的名字
System.out.println("绝对路径为:" + file.getAbsolutePath()); // 获取该File对象的绝对路径
System.out.println("路径为:" + file.getPath()); // 获取该File对象的相对路径
System.out.println("所属磁盘目录为:" + file.getParent());
if(!file.exists()){
file.mkdir();
}
System.out.println("此路径名表示的文件是一个目录吗?:" + file.isDirectory()); // 判断该File对象是不是目录
System.out.println("它是处于可读状态吗?:" + file.canRead()); // 判断该File对象是否可读
System.out.println("它是处于可写状态吗?" + file.canWrite()); // 判断该File对象是否可写
System.out.println("该文件长度为:" + file.length() + "字节"); // 获取该File对象中的字符长度
System.out.println("此文件最后修改的时间为:" + file.lastModified()); // 获取该File对象最后修改时间
}
}
输出:
文件名为:keytoolcmd.txt
绝对路径为:E:\baidu player\keytoolcmd.txt
路径为:E:\baidu player\keytoolcmd.txt
所属磁盘目录为:E:\baidu player
此路径名表示的文件是一个目录吗?:true
它是处于可读状态吗?:true
它是处于可写状态吗?true
该文件长度为:0字节
此文件最后修改的时间为:1336188385371
/**
* 实例117 显示目录的基本信息
*
*/
public class FileDemo_02 {
static class MyFilenameFilter implements FilenameFilter{
private String sf = ""; // 定义文件的后缀名
public MyFilenameFilter(String surfix){ // 用构造方法为sf变量赋值
this.sf = surfix;
}
@Override
public boolean accept(File dir, String name) {
// 重写FilenameFilter接口中的accept方法,判断指定的文件是否在指定的目录中
if(new File(dir, name).isFile()){
// 如果当前的File对象是一个文件,则返回它是否以指定的后缀结束,是返回true
return name.endsWith(sf);
}else{
//如果是文件夹,则直接返回true
return true;
}
}
}
public static void getAllFiles(String dirName){ // 列出指定目录下所有文件和子目录的路径
//如果dir不以文件分隔符结尾,自动添加文件分隔符。
if(!dirName.endsWith(File.separator)){
dirName = dirName + File.separator;
}
File dirFile = new File(dirName);
// 如果dir对应的文件不存在,或者不是一个文件夹,则退出
if(!dirFile.exists() || (!dirFile.isDirectory())){
System.out.println("失败!找不到指定的目录:" + dirName);
return;
}
// 列出源文件夹下所有文件(包括子目录)
File[] fileArray = dirFile.listFiles();
for(int i=0; i< fileArray.length; i++){
if(fileArray[i].isFile()){
System.out.print(fileArray[i].getAbsolutePath() + " ");
}else if(fileArray[i].isDirectory()){
System.out.println(fileArray[i].getAbsolutePath() + " ");
FileDemo_02.getAllFiles(fileArray[i].getAbsolutePath());
}
if((i + 1) % 2 == 0 )
System.out.println();
}
}
public static void getFilesByFilter(FilenameFilter filter, // 获取在指定目录下符合指定后缀文件名的所有文件
String dir_Path){
if(!dir_Path.endsWith(File.separator)){ //如果目录路径不是以文件分隔符结尾则自动添加文件分隔符。
dir_Path = dir_Path + File.separator;
}
File dir_File = new File(dir_Path);
if(!dir_File.exists() || (!dir_File.isDirectory())){ // 如果指定的目录不存在或不是一个目录则返回
System.out.println("失败!找不到指定目录:" + dir_Path);
return;
}
// 列出指定目录下的所有符合过滤器条件的文件(包括子目录)
File[] fileArray = dir_File.listFiles(filter);
for(int i = 0; i < fileArray.length; i++ ){
if(fileArray[i].isFile()){
System.out.println(fileArray[i].getAbsolutePath() + " 是文件!");
}else if(fileArray[i].isDirectory()){
System.out.println(fileArray[i].getAbsolutePath() +" 是目录!");
FileDemo_02.getFilesByFilter(filter,fileArray[i].getAbsolutePath());
}
}
}
public static void main(String[] args){
String dir = "E:\\baidu player";
System.out.println((dir + "目录下的内容"));
FileDemo_02.getAllFiles(dir);
System.out.println();
System.out.println("符合过滤器条件的文件如下:");
//新建一个文件名过滤器。参数为".txt"
FilenameFilter myFilenameFilter = new FileDemo_02.MyFilenameFilter(".txt");
FileDemo_02.getFilesByFilter(myFilenameFilter,dir);
}
}
E:\baidu player目录下的内容
E:\baidu player\A.txt E:\baidu player\keytoolcmd.txt
E:\baidu player\Write.txt E:\baidu player\百度网盘
E:\baidu player\百度网盘\desktop.ini E:\baidu player\百度网盘\我的文档
E:\baidu player\百度网盘\我的照片
E:\baidu player\百度网盘\我的视频
E:\baidu player\百度网盘\我的音乐
E:\baidu player\目录说明.txt
符合过滤器条件的文件如下:
E:\baidu player\A.txt 是文件!
E:\baidu player\keytoolcmd.txt 是目录!
E:\baidu player\Write.txt 是文件!
E:\baidu player\百度网盘 是目录!
E:\baidu player\百度网盘\我的文档 是目录!
E:\baidu player\百度网盘\我的照片 是目录!
E:\baidu player\百度网盘\我的视频 是目录!
E:\baidu player\百度网盘\我的音乐 是目录!
E:\baidu player\目录说明.txt 是文件!
/**
* 实例118 在指定的目录下创建单个文件
*
*/
public class FileDemo_03 {
// 此方法的主要作用是判断创建文件是否成功,如果成功则返回true否则返回false
public static boolean createFile(String destFileName){
File file = new File(destFileName);
if(file.exists()){
System.out.println("创建单个文件" + destFileName + "失败,目标文件已存在!");
return false; // 如果存在,则不需创建则返回fasle
}
if(destFileName.endsWith(File.separator)){
System.out.println("创建单个文件" + destFileName + "失败,目标文件不能为目录!");
return false;// 因为不是文件所以不可能创建成功,则返回false
}
// 判断目标文件所在的目录是否存在
if(!file.getParentFile().exists()){
// 如果目标文件所在的文件夹不存在,则创建父文件夹
System.out.println("创建" + file.getName() +"所在目录不存在,正在创建!" );
if(!file.getParentFile().mkdirs()){ // 判断父文件夹是否存在,如果存在则表示创建成功否则不成功
System.out.println("创建目标文件所在的目录失败!");
return false;
}
}
//创建目标文件
try{
if (file.createNewFile()) {// 调用createNewFile方法,判断创建指定文件是否成功
System.out.println("创建单个文件" + destFileName + "成功");
return true;
}else{
System.out.println("创建单个文件" + destFileName + "失败");
return false;
}
}catch(IOException e){
e.printStackTrace();
System.out.println("创建文件" + destFileName + "失败!" + e.getMessage());
return false;
}
}
public static void main(String[] args){
//创建目录
String dirName = "D:/temp/aa";
//创建文件
String fileName = dirName + "/bb/ccFile.txt";
FileDemo_03.createFile(fileName);
}
}
输出:
创建ccFile.txt所在目录不存在,正在创建!
创建单个文件D:/temp/aa/bb/ccFile.txt成功