1.File对象对应你磁盘上的一个文件或者文件夹(路径),一个file对象代表了一个文件或者文件夹的引用,并不是直接物理上的。
2.File.separator: 连接符
public static final String separator与系统相关的默认名称 - 分隔符字符,以方便的方式表示为字符串。 该字符串包含一个字符,即separatorChar 。 (public static final char separatorChar与系统相关的默认名称分隔符。 该字段被初始化为包含系统属性值file.separator的第一个file.separator 。 在UNIX系统上,该字段的值为’/’ ; 在Microsoft Windows系统上是’\’ 。 )
3.创建File实例对象的几种方式
第一种:
File file = new File("D:\\abc.txt");
System.out.println(file);
- 1
- 2
第二种:
// parent 前面的路径 chid 在parent 后面追加的目录
File file2 = new File("D:\\c", "abc.txt");
System.out.println(file2);
- 1
- 2
- 3
第三种:
File parent = new File("D:\\d");
File file3 = new File(parent, "qwe.doc");
System.out.println(file3);
- 1
- 2
- 3
4.创建文件
//返回的是否创建成功
try {
boolean flag = file.createNewFile();
System.out.println(flag);
} catch (IOException e) {
e.printStackTrace();
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
5.判断文件是否可读写canRead() canWrite()
System.out.println(file.canRead());
// 判断文件是否可写
System.out.println(file.canWrite());
- 1
- 2
- 3
6 . 判断文件是否存在exists(), 如果不存在则 创建, 存在则不创建了
if(!file2.exists()){// 判断文件是否存在
try {
file2.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
System.out.println("已经存在了 ");
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
7 .创建文件夹 单层mkdir()
String string = "D:\\d";
File file = new File(string);
boolean flag = file.mkdir();// 创建文件夹 单层
System.out.println(flag);
- 1
- 2
- 3
- 4
8 .利用mkdirs 可以同时创建多层目录
File file2 = new File("D:\\d\\a\\c\\w");
file2.mkdirs();// 利用mkdirs 可以同时创建多层目录
- 1
- 2
9 . 如何区分 文件或者是 文件夹
if(file2.isDirectory()){// 判断是否是文件夹
System.out.println("是文件夹");
}
if(file3.isFile()){
System.out.println("是文件");
}
- 1
- 2
- 3
- 4
- 5
- 6
10 . 删除指定文件
File file2 = new File("D:\\d\\a\\c\\w");
File file3 = new File(file2, "abc.txt");
boolean flag2 = file3.delete();
System.out.println(flag2);
- 1
- 2
- 3
- 4
11 .length()判断文件的长度 而非文件夹的长度 ,返回long类型的
long l = file3.length();
System.out.println(l);
- 1
- 2
12 .得到路径
File file = new File("D:\\d\\a\\c\\w\\abc.txt");
System.out.println(file.getPath());// 得到路径
- 1
- 2
13 .System.out.println(file.getParent());// 得到 文件的父目录
14 . System.out.println(file.getParentFile());// 得到 文件的父目录 返回的是File对象
15 .// 重命名 被其他 占用的时候 就不能重命名成功
File file3 = new File("D:\\d\\a\\c\\w\\hehe.txt");
boolean flag = file.renameTo(file3);
System.out.println(flag);
- 1
- 2
- 3
16.将文件过滤掉,文件夹保留
package com.qf.demo2;
import java.io.File;
import java.io.FilenameFilter;
/**
* list() 返回 指定目录 下的 所有 的 目录和文件的名字 String[]
* list(FilenameFilter filter) 得到的所有的名字 进行对应的过滤
*
*
*
* listFiles() 返回 指定目录 下的 所有 的 目录和文件的 file 对象表现形式 File[]
* listFiles(FilenameFilter filter) 得到的所有的名字 进行对应的过滤
*
*/
public class Test4 {
public static void main(String[] args) {
//File file = new File("D\\java上课内容\\2015新版PPT":);
File file = new File("D:\\java上课内容");
String[] strings = file.list();
/*for (String string : strings) {
System.out.println(string);
}
File[] files = file.listFiles();
for (File file2 : files) {
System.out.println(file2);
}*/
String[] strings2 = file.list(new MyFilter());
for (String string : strings2) {
System.out.println(string);
}
File[] file2 = file.listFiles(new MyFilter());
for (File file3 : file2) {
System.out.println(file3);
}
}
}
class MyFilter implements FilenameFilter{
// dir 指定的目录 name 是 dir 指定目录下的文件或者是文件夹的名字
public boolean accept(File dir, String name) {
// if(name.endsWith(".txt")){
// return false;
// }
// 假如是 文件 就 过滤掉, 如果是文件夹 , 就保留
// D:\\java上课内容 \\ java新版ppt
File file = new File(dir,name);
if(file.isFile()){
return false;
}
return true;// 返回ture 证明 保留下来的
// 返回 false 要被过滤掉的
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
17 .得到指定文件夹下的所有的文件
package com.qf.demo2;
import java.io.File;
/**
* 递归
* 自己调用自己
* 以此类推
* 同性质的问题 范围缩小, 直到 结果 可以直接的出来
需求: 得到指定文件夹下的所有的文件
计算 指定文件夹 所有文件 和 文件夹的个数
*/
public class Test5 {
public static void main(String[] args) {
findFile(new File("D:\\java上课内容"));
}
// 得到 指定文件夹下一层的所有的文件和文件
// // 如果是文件 打印输出, 如果文件夹
public static void findFile(File file){// 既可以代表文件也可以代表文件夹
// 保证非空
if(file != null){
// 保证是文件夹
if(!file.isFile()){
// 得到文件夹下的文件或者是 文件夹了
File[] files = file.listFiles();// 新版ppt ppt .pptx
for (File file2 : files) {// 把所有的文件和文件夹遍历一遍
findFile(file2);// 无论是文件还是文件夹 都可以调用 此方法
}
}else{
System.out.println(file);
}
}else{
System.out.println("闹着玩呢??????");
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-60ecaf1f42.css" rel="stylesheet">
</div>