//用这种形式可以跨平台使用,(分割副不同);
//System.out.println(File.pathSeparator);
//System.out.println(File.pathSeparatorChar);
System.out.println(File.separator);
// System.out.println(File.separatorChar);
好了~可以开始啦~
(1)首先,练习一个~假如我们系统每天晚上自动备份,那么每晚自动创建一个以当前日期命名的文件:
Date d=new Date();
DateFormat df=new SimpleDateFormat("yyyyMMdd");
String fileName=df.format(d);
File f=new File(fileName);
if(! f.exists() && f.mkdir() ){
System.out.println(f.getName()+"创建成功!");
}else{
System.out.println(f.getName()+"创建失败!");
}
(2)好了~小热身结束,我要开始激动人心的模拟下DOS下的产看目录下文件的dir命令了~\(≧▽≦)/~
1.输出文件,但是并不把其子目录也一并输出的非递归型的!
//输出文件 (非递归!)
private static void showDirectoryInfo(File ff) {
//首先,我们需要先进性一步容错处理:
如果,传进来的ff为空,或者ff不是File类型的,那么我们就不应该进行下面的步骤:
if(ff==null|| ff.isFile() ){
return ;
}
//listFiles()返回一个抽象路径名数组,表示此抽象路径名表示的目录中的文件。
File[] fs=ff.listFiles();
2.输出文件,把其子目录也一并输出的递归型的!
private static void showDirectoryInfoAll(File ff, int level) {
if(ff==null || ff.exists()==false ){
return;
}
//拼接字符为了格式好看!;
StringBuffer sb=new StringBuffer();
for(int i=0;i0){
for(File f:fs){
//注意!!!这里特别重要,绝对不能用level++,这样同一级别的目录也会输出不同的空格。
showDirectoryInfoAll(f,level+1);
}
}
}
}
//好了,这就是之前说的,输出文件的信息的方法,被我封装起来啦~~~
public static String getFileInfo(File f){
//防DOS系统
//最后一次被修改的时间
long time=f.lastModified();
Date timeDate=new Date();
DateFormat df=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String FileTimed=df.format(timeDate);
//求文件类型
String fileType=f.isFile()?"\t":"";
//求文件长度
String fileLength=getfileLength(f);
return FileTimed+"\t"+fileType+"\t"+fileLength;
}
还是为了输出的美观~~~又做了个文件长度的处理!
private static String getfileLength(File f) {
if(f.isDirectory() ){
return "\t";
}
long length=f.length();
if( length/1024/1024/1024/1024/1024>0 ){
return length/1024/1024/1024/1024/1024+"PB";
}
if( length/1024/1024/1024/1024>0 ){
return length/1024/1024/1024/1024+"TB";
}
if( length/1024/1024/1024>0 ){
return length/1024/1024/1024+"GB";
}
if( length/1024/1024>0 ){
return length/1024/1024+"MB";
}
if( length/1024>0 ){
return length/1024+"KB";
}
return length+"B";
}
System.out.println("请输入一个路径:");
Scanner sc=new Scanner(System.in);
String path=sc.nextLine();
//选择目录的文件
File ff=new File(path);
System.out.println("您是否需要显示所有信息:YES(1) NO(2)");
int choose=sc.nextInt();
if(choose==1){
showDirectoryInfoAll(ff,0);
}else if(choose==2){
showDirectoryInfo(ff);
}
else{
System.out.println("输入错误!程序关闭!");
}
DOS下的dir命令显示的结果:
DOS命令里的tree命令:
俺自己写的仿写dir运行结果:
仿写tree运行结果(看着好像跟window显示的不同呀!!!嘿嘿~~很简单,将代码中sb.appan(“|\t”))和sb.appan(“-----”))就行啦~~~~哈哈~~~有木有很像!!):