JAVA之旅(二十八)
一.File概述
文件的操作是非常重要的,我们先来看下他的基本概念
用于将文件或者文件夹封装成对象
方便对文件和文件夹的操作
File对象可以作为参数传递给流的构造函数
我们写个小例子先
packagecom.lgl.hellojava;
importjava.io.File;
publicclassHelloJJAVA{
publicstaticvoidmain(String[]args){
//创建File对象,不存在也没事
Filefile=newFile("a.txt");
//目录文件名
Filefile2=newFile("F:\\isblog\\Demo","a.txt");
//封装什么就打印什么
System.out.println(file);
}
}
其实就是一个类的使用
二.创建删除
是文件肯定有操作方法
1.创建
2.删除
3.判断
4.获取信息
1.创建
忽然如此,我们用实际的例子来说明岂不妙哉?
packagecom.lgl.hellojava;
importjava.io.File;
importjava.io.IOException;
publicclassHelloJJAVA{
publicstaticvoidmain(String[]args){
//创建File对象
Filefile=newFile("a.txt");
try{
//创建
file.createNewFile();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
在指定的位置创建文件,如果文件已经存在,就不创建,并且返回false,和输出流不一样,输出流对象已建立文件,文件就已经存在,会覆盖
2.删除
删除我就不说了,直接这样
file.delete();
他还有一个方法比较好玩
file.deleteOnExit();
在程序退出之后删除文件
三.判断文件存在
判断文件是否存在
packagecom.lgl.hellojava;
importjava.io.File;
importjava.io.IOException;
publicclassHelloJJAVA{
publicstaticvoidmain(String[]args){
//创建File对象
Filefile=newFile("a.txt");
//判断是否存在,不存在则创建
if(!file.exists()){
try{
file.createNewFile();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
}
这样我们就可以去判断文件是否存在且不存在就去创建文件了。
四.创建文件夹
我们继续来看怎么去创建文件夹,其实也很简单
packagecom.lgl.hellojava;
importjava.io.File;
publicclassHelloJJAVA{
publicstaticvoidmain(String[]args){
//创建File对象
Filefile=newFile("liuguilin");
file.mkdir();
}
}
OK,这样的话,就创建了,这里注意mkdir只能创建一级目录,而mkdirs可以创建多级文件夹目录
五.判断是否为文件/文件夹
有时候还是需要的
packagecom.lgl.hellojava;
importjava.io.File;
publicclassHelloJJAVA{
publicstaticvoidmain(String[]args){
Filefile=newFile("liuguilin");
//是否为文件
System.out.println(file.isFile());
//是否为文件夹
System.out.println(file.isDirectory());
}
}
他返回的是boolean值来确定是否存在,但是这里也要记住一电,就是一定要确定这个文件是否存在,所以我们的流程可以这样写
packagecom.lgl.hellojava;
importjava.io.File;
importjava.io.IOException;
publicclassHelloJJAVA{
publicstaticvoidmain(String[]args){
Filefile=newFile("liuguilin");
//判断文件是否存在
if(file.exists()){
//再去判断文件还是文件夹
if(file.isFile()){
System.out.println("文件");
}elseif(file.isDirectory()){
System.out.println("文件夹");
}
}else{
try{
file.createNewFile();
}catch(IOExcwww.shanxiwang.neteptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
}
这样逻辑是比较清晰的
六.获取信息
获取的话,我们是怎么去获取信息的呢?毫无疑问,是get,比如getNmae之类的,我们用代码里的注释来说明是比较好的
packagecom.lgl.hellojava;
importjava.io.File;
publicclassHelloJJAVA{
publicstaticvoidmain(String[]args){
Filefile=newFile("liuguilin.txt");
Filefile2=newFile("haha.txt");
//项目路径下+文件名
System.out.println("路径:"+file.getPath());
//全路径
System.out.println("绝对路径:"+file.getAbsolutePath());
//最后一次修改时间
System.out.println("时间:"+file.lastModified());
//绝对路径中的文件父目录,如果是相对路径,返回的为空
System.out.println("父目录:"+file.getParent());
//把内容拷贝到另一个文本中并且删除自身
System.out.println(file.renameTo(file2));
}
}
运行的结果
七.文件列表
列出可用的系统目录,我们看代码
packagecom.lgl.hellojava;
importjava.io.File;
publicclassHelloJJAVA{
publicstaticvoidmain(String[]args){
File[]listRoots=File.listRoots();
for(Filef:listRoots){
//打印磁盘目录
System.out.println(f);
}
}
}
这样我们就可以得到有效盘符了
我们可以进行改进,我们打印C盘下的所有文件
packagecom.lgl.hellojava;
importjava.io.File;
publicclassHelloJJAVA{
publicstaticvoidmain(String[]args){
//必须封装了一个目录,该目录还必须存在
Filef=newFile("c:\\");
String[]list=f.list();
for(Stringfi:list){
System.out.println(fi);
}
}
}
得到的肯定就是所有文件的列表咯
八.文件过滤
我们做文件夹的时候经常会用到的一个小知识点,就是过滤文件
packagecom.lgl.hellojava;
importjava.io.File;
importjava.io.FilenameFilter;
publicclassHelloJJAVA{
publicstaticvoidmain(String[]args){
Filef=newFile("c:\\");
String[]list=f.list(newFilenameFilter(){
//过滤
@Override
publicbooleanaccept(Filedir,Stringname){
//只返回txt后缀的文件
returnname.endsWith(".txt");
}
});
for(Stringfi:list){
//过滤
System.out.println(fi);
}
}
}
需要监听,然后过滤。
|
|