IO基础加强 day01 file文件的基本操作

IO中的分隔符应该用 "/"来表示   而不是"\" 因为在linux的盘符中无法识别"\""/"可以兼容linux和windows

如  :  d:/abc/123.txt      而不是 d:\abc\123.txt

基本方法

                File f1 = new File("c:/abc","123.txt");
//获取文件的绝对路径
String absolutePath = f1.getAbsolutePath();//c:\abc\123.txt
File absoluteFile = f1.getAbsoluteFile();//c:\abc\123.txt
//file和String互相转换
File f2 = new File(absolutePath);
String path1 = f2.toString();
//获取文件路径
String path = f2.getPath();//c:\abc\123.txt
//获取文件名
String name = f2.getName();//123.txt
//获取上级文件夹名称
String parent = f2.getParent();//c:\abc
//获取上级文件夹
File parentFile = f2.getParentFile();//c:\abc
//file本身也只是一个路径,跟String是一样的
---------------------------------------------------------------------
//是否可执行   --只要能打开就算可执行的文件
boolean canExecute = f2.canExecute();//true
//是否可读    --可读可写和系统文件权限有关(可以手动设置)
boolean canRead = f2.canRead();//true
//是否可写     --可读可写和系统文件权限有关(可以手动设置)
boolean canWrite = f2.canWrite();//true
//是否为隐藏文件
boolean hidden = f2.isHidden();//false
//最后修改时间(格林威治时间)
long lastModified = f2.lastModified();//1527592541180
//字节长度

long length = f2.length();//6       

                File f1 = new File("c:/abc","123333.txt");
//是否是文件
boolean file = f1.isFile();//true
//新建文件   --判断是否存在,不存在则新建
boolean exists = f1.exists();//false
if(!exists){
boolean createNewFile = f1.createNewFile();
}else{
//存在该文件则重命名
//f1.renameTo(new File("c:/abc/1.txt"));
//删除文件对象
boolean delete = f1.delete();
//java虚拟机退出时删除文件对象
f1.deleteOnExit();
}
//创建临时文件  -- prefix(String)前缀    文件名  --suffix(String)后缀   文件类型  
//--directory(File)存放到哪个文件夹  默认为windows/Temp文件夹

File.createTempFile("xxx",".textsd",new File("c:/abc"));//C:\abc\xxx7183939415209379196.textsd 

-----------------------------------------------------------------------------------

                File f1 = new File("c:/abc","123333.txt");
//是否为目录
boolean directory = f1.isDirectory();//false  非文件夹
//目录是否存在
boolean exists = f1.exists();//true 存在文件..但是不存在文件夹
File f2 = new File("c:/abc/dis/12");
//创建目录(单层目录)  --注意文件和文件夹也不能重名
boolean mkdir = f2.mkdir();
//多层目录创建(此时用mkdir方法无效)
f2 = new File("c:abc/12/123/aaa");
boolean mkdirs = f2.mkdirs();
//获取该目录下的文件的名称(目录和文件)
f2 = new File("c:abc");
String[] list = f2.list();
for(String a : list){
System.out.println(a);
}
//获取该目录下的文件
File[] listFiles = f2.listFiles();
for (File file : listFiles) {
System.out.println(file);
}
//获取系统所有磁盘根目录     C:\  D:\  E:\  F:\  G:\  (只在windows上应用)
File[] listRoots = File.listRoots();
for (File file : listRoots) {
System.out.println(file);

}         

 

 

练习  :找出一个目录下的所有子文件    递归

 

 

        public static void main(String[] args) throws IOException {
File f1 = new File("c:/Program");
File[] listFiles = f1.listFiles();
getFiles(listFiles);
}


private static void getFiles(File[] f) {
for (File file : f) {
if(file.isDirectory()){
getFiles(file.listFiles());
}else{
System.out.println(file);
}
}
}

----文件名过滤器

 

public static void main(String[] args) throws IOException {
File fs = new File("c:/abc");
//获取目录下的所有文件
File[] listFiles = fs.listFiles();
for (File file : listFiles) {
System.out.println(file);
}
/* 输出所有文件和文件夹
    c:\abc\1.txt
c:\abc\12
c:\abc\123.txt
c:\abc\123333.txt
c:\abc\dis
c:\abc\xxx7183939415209379196.textsd
*/
System.out.println("---------------");
//只输出为txt类型的文件
File[] listFiles2 = fs.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
//要过滤掉文件夹
if(new File(dir,name).isFile() && name.endsWith(".txt")){
return true;
}else{
return false;
}
}
});
for (File file : listFiles2) {
System.out.println(file);
}
/* 只有.txt类型的文件
    c:\abc\1.txt
c:\abc\123.txt
c:\abc\123333.txt 
*/
//可将代码优化为     --效果同上
File[] listFiles3 = fs.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
//要过滤掉文件夹
return new File(dir,name).isFile() && name.endsWith(".txt");
}
});
 

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值