文件系统操作在java.io.File类中,下面演示几个常用的文件操作:
- 1、显示一个文件的信息
package javastudy;
import java.io.File;
import java.util.Calendar;
public class Test14 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//两种定义文件示例的方法
// File file=new File("F:\\Java\\JavaTools\\jdk-8u65-windows-x64.exe"); //使用“/”进行转义
File file=new File("F:\\Java\\JavaTools", "jdk-8u65-windows-x64.exe");
StringBuilder str=new StringBuilder();
Calendar ca=Calendar.getInstance();//使用此方法将时间格式转换,易于查看
ca.setTimeInMillis(file.lastModified());
str.append("文件的最后修改日期:"+ca.getTime().toLocaleString());//存在横线代表此方法已过时
str.append("\n");
str.append("文件的大小:"+file.length());
str.append("\n");
if(file.isDirectory()){
str.append("类型:目录");
}else{
str.append("类型:文件");
}
System.out.println(str.toString());
}
}
执行结果
- 2、显示某个盘符根目录下的所有文件和目录,并对文件和目录做出区分
package javastudy;
import java.io.File;
public class Test15 {
public static void main(String[] args) {
// TODO Auto-generated method stub
File file=new File("e:\\");
File[] files=file.listFiles(); //定义一个数组files来存放文件名
for(File f:files){ //将files中的每一个文件交给f来处理
if(f.isDirectory()){
System.out.print("O");
}else{
System.out.print("X");
}
System.out.println("\t" + f.getPath());
}
}
}
执行结果
- 找出某个盘符下所有扩展名为txt的文件,并显示出来(可以使用递归算法:函数自己调用自己)
package javastudy;
import java.io.File;
import com.sun.webkit.ContextMenu.ShowContext;
public class Test15 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String path="e:\\";
Show(path);
}
static void Show(String path){
File f=new File(path); //定义一个对象f
File[] files=f.listFiles();//定义数组,将path路径定义的对象f列表文件,交由数据files存放
for (File file:files){
if(file.isFile()){
if(file.getPath().toUpperCase().endsWith("TXT")){
System.out.println(file.getPath());
}
}else{ //如果不是文件,还是一个目录,那么要递归此目录
Show(file.getPath());//是目录,在调用自己,直至遍历出所有文件
}
}
}
}
通过执行结果发现,此时会报一个空指针的错误
执行结果
原因是系统自带的文件不能够被访问,因此需要将其去除掉
package javastudy;
import java.io.File;
import com.sun.webkit.ContextMenu.ShowContext;
public class Test15 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String path="e:\\";
Show(path);
}
static void Show(String path){
//System.out.println("当前执行的路径是:"+path+"......");//显示在处理哪个文件夹
if(path.endsWith("System Volume Information")){
return;
}
File f=new File(path); //定义一个对象f
File[] files=f.listFiles();//定义数组,将path路径定义的对象f列表文件,交由数据files存放
for (File file:files){
if(file.isFile()){
if(file.getPath().toUpperCase().endsWith("TXT")){
System.out.println(file.getPath());
}
}else{ //如果不是文件,还是一个目录,那么要递归此目录
Show(file.getPath());//是目录,在调用自己,直至遍历出所有文件
}
}
}
}
执行结果中还会报一个空指针错误,原因是因为对是否为空没有做条件判断,即指向的字符对象如果为空值,就会报出空指针错误,但可以根据提示,添加相应的条件
执行结果
package javastudy;
import java.io.File;
import com.sun.webkit.ContextMenu.ShowContext;
public class Test15 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String path="e:\\";
Show(path);
}
static void Show(String path){
//System.out.println("当前执行的路径是:"+path+"......");//显示在处理哪个文件夹
if(path.endsWith("System Volume Information")||path.endsWith("~TAAA6E.cab")){
return;
}
File f=new File(path); //定义一个对象f
File[] files=f.listFiles();//定义数组,将path路径定义的对象f列表文件,交由数据files存放
for (File file:files){
if(file.isFile()){
if(file.getPath().toUpperCase().endsWith("TXT")){
System.out.println(file.getPath());
}
}else{ //如果不是文件,还是一个目录,那么要递归此目录
Show(file.getPath());//是目录,在调用自己,直至遍历出所有文件
}
}
}
}
网友评论