1.使用File创建一个文件.
public class CreateNewFileDemo {
public static void main(String[] args) throws IOException {
/*
* 在当前目录下创建test.txt文件
*/
File file = new File("./test.txt");
/*
* boolean exists()
* 判断当前File表示的文件或目录是否已经
* 存在
*/
if(!file.exists()){
//创建该文件
file.createNewFile();
System.out.println("创建完毕!");
}else{
System.out.println("文件已存在!");
}
}
}
2.File的每一个实例可以用于表示文件系统中的一个文件或目录,使用File可以:
1:访问文件或目录的属性(名字,大小,修改时间等)
2:操作文件或目录(创建,删除)
3:访问一个目录的子项但是不能读写文件数据。
public class FileDemo {
public static void main(String[] args) {
/*
* 路径尽量选取相对路径,不同系统的路径
* 方式不同,相对路径可以做到跨平台。
*
* elipse中当前目录(./)是当前程序所在项目的目录
* 例如:
* windows:D:/workspace/JSD1803SE/
* linux:home/soft01/eclipse_workspace/JSD1803SE/
*
*
*/
File file = new File("./demo.txt");
//获取名字
String name = file.getName();
System.out.println("名字:"+name);
//获取大小(字节数)
long len = file.length();
System.out.println("大小:"+len);
//可读可写
boolean cr = file.canRead();
boolean cw = file.canWrite();
System.out.println("可读:"+cr);
System.out.println("可写:"+cw);
//是否隐藏
boolean ih = file.isHidden();
System.out.println("是否隐藏:"+ih);
}
}
4.删除一个文件。
public class DeleteFileDemo {
public static void main(String[] args) {
/*
* 将当前目录中的test.txt文件删除
*/
File file = new File("./test.txt");
if(file.exists()){
file.delete();
System.out.println("删除完毕!");
}else{
System.out.println("该文件不存在!");
}
}
}
5.获取一个目录中的所有子项。
public class ListFilesDemo {
public static void main(String[] args) {
/*
* 获取当前目录(项目目录)中的所有子项
*/
File dir = new File(".");
/*
* boolean isFile()
* boolean isDirectory()
* 判断当前File表示的是文件还是目录
*/
if(dir.isDirectory()){
//获取所有子项
File[] subs = dir.listFiles();
for(int i=0;i<subs.length;i++){
System.out.println(subs[i].getName());
}
}
}
}
6.File提供了一个重载的listFiles方法,可以指定一个文件过滤器,然后将一个目录中满足过滤器要求的子项返回。不满足的则忽略。
public class ListFilesDemo2 {
public static void main(String[] args) {
/*
* 获取当前目录中的所有文本文件?
*/
File dir = new File(".");
// File[] subs = dir.listFiles(new MyFilter());
//使用匿名内部类形式创建
File[] subs = dir.listFiles(new FileFilter(){
public boolean accept(File file){
return file.getName().endsWith(".txt");
}
});
System.out.println("len:"+subs.length);
for(int i=0;i<subs.length;i++){
System.out.println(subs[i].getName());
}
}
}
class MyFilter implements FileFilter{
public boolean accept(File file) {
String name = file.getName();
System.out.println("正在过滤:"+name);
return name.endsWith(".txt");
// return file.isFile();
}
}
7.使用File新建一个目录。
public class MkDirDemo {
public static void main(String[] args) {
/*
* 在当前目录下新建一个目录demo
*/
File dir = new File("./demo");
if(!dir.exists()){
dir.mkdir();
System.out.println("目录已创建");
}else{
System.out.println("目录已存在");
}
}
}
8.创建一个多级目录。
public class MkDirsDemo {
public static void main(String[] args) {
/*
* 在当前目录下创建a/b/c/d/e/f目录
*/
File dir = new File("./a/b/c/d/e/f");
if(!dir.exists()){
/*
* mkdirs方法会将所有不存在的父目录
* 一同创建出来
*/
dir.mkdirs();
System.out.println("目录创建完毕!");
}else{
System.out.println("目录已存在!");
}
}
}
9.删除目录。
public class DeleteDirDemo {
public static void main(String[] args) {
/*
* 将当前目录中的demo目录删除
*/
File dir = new File("./a");
if(dir.exists()){
/*
* 删除目录的前提条件是该目录是一个
* 空目录
*/
dir.delete();
System.out.println("删除完毕!");
}else{
System.out.println("目录不存在!");
}
}
}
10.删除目录。由于delete方法删除目录时要求必须是一个空目录。那么在实际情况中,我们需要先将一个要删除的目录清空才可以将其删除。
public class DeleteDirsDemo {
public static void main(String[] args) {
File dir = new File("./a");
delete(dir);
}
/**
* 删除给定的File所表示的文件或目录、
*
* 递归调用
* 方法内部调用自己方法的现象称为递归调用
* 递归能不用就不用。随着递归的次数增加,内存
* 开销较大。
*
* 使用递归
* 1:递归现象必须在一个分支中控制。
* 2:层级尽量少。
*
*
* @param file
*/
public static void delete(File file){
if(file.isDirectory()){
/*
* 先将该目录清空
* 1:获取该目录中所有子项
* 2:遍历将他们一个一个删除
*/
File[] subs = file.listFiles();
for(int i=0;i<subs.length;i++){
File sub = subs[i];
delete(sub);
}
}
file.delete();
}
}
网友评论