您的位置:首页 > 编程语言 > Java开发

Java中的文件File类

2017-11-01 21:04 323 查看
涉及到读写,除了键盘的输入,屏幕的输出显示,可能最多的就是关于文件的读写,很多场景中都会有关于文件读写的应用,比如数据的导出则涉及到写文件,还有图片的上传,则涉及到读取文件……当然,文件是存储在硬盘上的数据,可以为我们永久保存数据

下面来看看对于文件的操作:无非是创建文件,删除文件,判断文件,获取文件的某些属性以及如何获取文件的子文件及其子文件夹

文件的构造方法

import java.io.File;

/**
* Created by Dream on 2017/11/1.
*/
/*
构造File类对象:
new File(String pathname):通过将给定路径来创建一个新File实例。
new File(String parent, String child):根据parent路径名字符串和child路径名创建一个新File实例。
parent是指上级目录的路径,完整的路径为parent+child.
new File(File parent, String child):根据parent抽象路径名和child路径名创建一个新File实例。
parent是指上级目录的路径,完整的路径为parent.getPath()+child.
说明:
如果指定的路径不存在(没有这个文件或是文件夹),不会抛异常,这时file.exists()返回false。
*/
public class CreateFileTest {
public static void main(String[] args){
String pathName = "F:\\b.txt";
File file = new File(pathName);
System.out.println("文件是否存在?"+file.exists());
String parent = "F:";
File file2 = new File(parent,"del.txt");
System.out.println("文件2是否存在?"+file2.exists());
File parentFile = new File(parent);
File file3 = new File(parentFile,"judge.txt");
System.out.println("文件3是否存在?"+file3.exists());
}
}


注意:

1:创建File对象需要导包, import java.io.File

2:File对象没有无参数构造.创建对象需要传参.根据API文档提示,传入一个文件的字符串路径. String path=”c:/a.txt”;(a.txt 文件在c盘下已经存在)

3.File类对象既可以代表文件,也可以代表文件夹

4.new一个File类对象,并不代表会创建一个文件或者文件夹,不管指定的路径是否存在,都可以创建任意文件名的File实例,至于是否真实存在,可以调用exists方法进行判断,返回true表示存在,否则不存在。

创建文件的方法:

package BasicObject.day19;

import java.io.File;
import java.io.IOException;

/**
* Created by Dream on 2017/11/1.
*/
/*
创建:
createNewFile() 在指定位置创建一个空文件,成功就返回true,如果已存在就不创建然后返回false
mkdir()         在指定位置创建目录,这只会创建最后一级目录,如果上级目录不存在就抛异常。
mkdirs()        在指定位置创建目录,这会创建路径中所有不存在的目录。
renameTo(File dest) 重命名文件或文件夹,也可以操作非空的文件夹,文件不同时相当于文件的剪切,剪切时候不能操作非空的文件夹。
移动/重命名成功则返回true,失败则返回false。
*/
public class FileCreateTest {
public static void  main(String[] args)throws IOException{
File file = new File("F:\\b.txt");
System.out.println("创建文件成功?"+file.createNewFile());
File dir = new File("F:\\empty");
System.out.println("创建文件夹成功?"+dir.mkdir());//创建的是单级目录,只能是文件夹,不能创建文件
File dirs = new File("F:\\empty\\bbb\\cc\\dd");
System.out.println("创建文件夹目录成功吗?"+dirs.mkdirs());  //创建多级目录,只能创建文件夹,不能创建文件

/*同目录,实现的是重命名
System.out.println("文件重命名成功吗?"+file.renameTo(new File("F:\\a.txt")));
*/
/*不同目录,则将该文件剪切到目标目录,文件也被重命名
System.out.println("文件重命名成功吗?改变目录:"+file.renameTo(new File("E:\\a.txt")));
*/
/*同目录文件夹,即使为空文件夹,也可以成功重命名
System.out.println("空文件夹重命名成功吗?同目录:"+dir.renameTo(new File("F:\\emp")));
*/
/*不同目录,文件夹是不可剪切的,无论文件是否为空,只能是操作同目录的!*/
System.out.println("文件夹重命名成功吗?同目录:"+dir.renameTo(new File("F:\\aaaaaaaaaaw")));
}
}


删除&判断

package BasicObject.day19;

import java.io.File;
import java.io.IOException;

/**
* Created by Dream on 2017/11/1.
*/
/*
判断:
exists()        文件或文件夹是否存在。
isFile()        是否是一个文件,如果不存在,则始终为false。
isDirectory()   是否是一个目录,如果不存在,则始终为false。
isHidden()      是否是一个隐藏的文件或是否是隐藏的目录。
isAbsolute()    测试此抽象路径名是否为绝对路径名。
*/
public class DelJudgeTest {
public static void main(String[] args)throws IOException{
/*
删除:
delete() 删除文件或一个空文件夹,如果是文件夹且不为空,则不能删除,成功返回true,失败返回false。
deleteOnExit()  在虚拟机终止时,请求删除此抽象路径名表示的文件或目录,保证程序异常时创建的临时文件也可以被删除
File file = new File("F:\\del.txt");
System.out.println("文件是否创建成功?"+file.createNewFile());
System.out.println("文件是否删除成功?"+file.delete());
File file2 = new File("F:\\delOnExit.txt");
file.createNewFile();
file2.deleteOnExit();*/
File file = new File("F:\\judge.txt");
System.out.println("文件创建成功吗?"+file.createNewFile());
System.out.println("是否是一个文件?"+file.exists());
File dir = new File("F:\\judge");
System.out.println("文件夹是否创建成功?"+dir.mkdir());
System.out.println("是否是一个文件夹?"+dir.isDirectory());
System.out.println("是否是绝对路径名?"+dir.isAbsolute());
}
}


获取的方法:

package BasicObject.day19;

import java.io.File;
import java.io.FilenameFilter;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
* Created by Dream on 2017/11/1.
*/
/*
获取方法:
getName()       获取文件或文件夹的名称,不包含上级路径。
getPath()       返回绝对路径,可以是相对路径,但是目录要指定
getAbsolutePath()   获取文件的绝对路径,与文件是否存在没关系
length()        获取文件的大小(字节数),如果文件不存在则返回0L,如果是文件夹也返回0L。
getParent()     返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回null。
lastModified()  获取最后一次被修改的时间。
文件夹相关:
staic File[] listRoots()    列出所有的根目录(Window中就是所有系统的盘符)
list()                      返回目录下的文件或者目录名,包含隐藏文件。对于文件这样操作会返回null。
list(FilenameFilter filter) 返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null。
listFiles()                 返回目录下的文件或者目录对象(File类实例),包含隐藏文件。对于文件这样操作会返回null。
listFiles(FilenameFilter filter)    返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null。
*/
class MyFilter implements FilenameFilter{

@Override
public boolean accept(File dir, String name) {
return name.endsWith(".java");
}
}
public class FilePrac {
public static void main(String[] args){
/*File dir = new File("E:\\ForUs\\JavaPrac\\src");
getJavaFiles3(dir);*/

//new File()通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例,前提是指定路径必须存在文件或者文件夹
File file = new File("F:\\a.txt");
System.out.println("文件是否存在:"+file.exists());
System.out.println("文件路径:"+file.getPath());
System.out.println("文件绝对路径:"+file.getAbsolutePath());
System.out.println("文件长度:"+file.length());
System.out.println("文件父路径:"+file.getParent());
long last = file.lastModified();
Date date = new Date(last);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("最有一次的修改时间:"+format.format(date));
System.out.println("列出所有跟目录:");
File[] files = File.listRoots();
for(File f : files){
System.out.println(f.getPath());
}
}
/*列出某个文件下的所有.java文件*/
public static void getJavaFiles(File dir){
File[] files = dir.listFiles();  //获取dir目录下的所有的子文件:包括文件和文件夹
for(File file : files){
String fileName = file.getName();
if(fileName.endsWith(".java") && file.isFile()){
System.out.println(fileName);
}
}
}
public static void getJavaFiles2(File dir){
String[] fileNames = dir.list();   //直接获取目录dir下的文件名
for(String fileName:fileNames){
if(fileName.endsWith(".java")){
System.out.println(fileName);
}
}
}
/*通过过滤器实现*/
public static void getJavaFiles3(File dir){
String[] fileNames = dir.list(new MyFilter());
for(String fileName:fileNames){
System.out.println(fileName);
}
}
/*获得目录下的文件和文件夹*/
public static void getFiles(File dir){
File[] files = dir.listFiles();
List<File> fileList = new ArrayList<File>();
List<File> dirList = new ArrayList<File>();
for(int i=0;i<files.length;i++){
if(files[i].isFile()){
fileList.add(files[i]);
}
if(files[i].isDirectory()){
dirList.add(files[i]);
}
}
System.out.println("子文件:");
for(File file:fileList){
System.out.println(file.getName());
}
System.out.println("子文件夹:");
for(File file:dirList){
System.out.println(file.getName());
}

}
}


其中getJavaFiles,getJavaFiles2,getJavaFiles3三个方法是实现了如下功能:列出指定目录中所有扩展名为.java的文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: