Java 中 File 的创立和应用
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);
第二种:
// parent 后面的门路 chid 在 parent 前面追加的目录
File file2 = new File("D:\\c", "abc.txt");
System.out.println(file2);
第三种:
File parent = new File("D:\\d");
File file3 = new File(parent, "qwe.doc");
System.out.println(file3);
4. 创立文件
// 返回的是否创立胜利
try {boolean flag = file.createNewFile();
System.out.println(flag);
} catch (IOException e) {e.printStackTrace();
}
5. 判断文件是否可读写 canRead() canWrite()
System.out.println(file.canRead());
// 判断文件是否可写
System.out.println(file.canWrite());
6 . 判断文件是否存在 exists(), 如果不存在则 创立, 存在则不创立了
if(!file2.exists()){// 判断文件是否存在
try {file2.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();}
}else{System.out.println("曾经存在了");
}
7 . 创立文件夹 单层 mkdir()
String string = "D:\\d";
File file = new File(string);
boolean flag = file.mkdir();// 创立文件夹 单层
System.out.println(flag);
8 . 利用 mkdirs 能够同时创立多层目录
File file2 = new File(“D:\d\a\c\w”);
file2.mkdirs();// 利用 mkdirs 能够同时创立多层目录
9 . 如何辨别 文件或者是 文件夹
if(file2.isDirectory()){// 判断是否是文件夹
System.out.println("是文件夹");
}
if(file3.isFile()){System.out.println("是文件");
}
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);
11 .length()判断文件的长度 而非文件夹的长度 , 返回 long 类型的
long l = file3.length();
System.out.println(l);
12 . 失去门路
File file = new File(“D:\d\a\c\w\abc.txt”);
System.out.println(file.getPath());// 失去门路
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);
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 要被过滤掉的
}
}
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. 谬误示范 1,输入的是创立文件夹 D:\filepath\test\test.txt。
public class FileTest {public static void main(String[] args) throws IOException {
String fileName = "test.txt";
File testFile = new File("D:" + File.separator + "filepath" + File.separator + "test" + File.separator + fileName);
if (!testFile.exists()) {testFile.mkdirs();// 能创立多级目录
}
System.out.println("testFile:"+testFile);
}}
result--------------------testFile:D:\filepath\test\test.txt
2. 谬误示范 2,如果 D:\filepath\test\ 文件夹不存在,会报错。
public class FileTest {public static void main(String[] args) throws IOException {
String fileName = "test.txt";
File testFile = new File("D:" + File.separator + "filepath" + File.separator + "test" + File.separator + fileName);
if (!testFile.exists()) {testFile.createNewFile();// 能创立多级目录
}
System.out.println("testFile:"+testFile);
}}
3. 实现在多重目录下创立文件:话不多说上正确代码:
package com.zte.FileTest;
import sun.net.ftp.FtpClient;
//import com.zte.ums.cnms.pm.load.enums.MppFileDirEnum;
import java.io.File;
import java.io.IOException;
public class FileTest {public static void main(String[] args) throws IOException {
String fileName = "test.txt";
System.out.println("File.separator:" + File.separator);
File testFile = new File("D:" + File.separator + "filepath" + File.separator + "test" + File.separator + fileName);
File fileParent = testFile.getParentFile();
// 返回的是 File 类型, 能够调用 exsit()等办法
String fileParentPath = testFile.getParent();
// 返回的是 String 类型
System.out.println("fileParent:" + fileParent);
System.out.println("fileParentPath:" + fileParentPath);
if (!fileParent.exists()) {fileParent.mkdirs();// 能创立多级目录
}
if (!testFile.exists())
testFile.createNewFile();
// 有门路能力创立文件
System.out.println(testFile);
String path = testFile.getPath();
String absolutePath = testFile.getAbsolutePath();
// 失去文件 / 文件夹的绝对路径
String getFileName = testFile.getName();
// 失去文件 / 文件夹的名字
System.out.println("path:"+path);
System.out.println("absolutePath:"+absolutePath); System.out.println("getFileName:"+getFileName);
}} result---------------------------------File.separator:\fileParent:D:\filepath\testfileParentPath:D:\filepath\testD:\filepath\test\test.txtpath:D:\filepath\test\test.txtabsolutePath:D:\filepath\test\test.txtgetFileName:test.txt
File 类的常见办法(参考一位大牛的,不小心把链接关了)
1. 创立。
boolean createNewFile(); // 创立文件
boolean mkdir(); 创立文件夹
boolean mkdirs(); 创立多级文件夹。
2. 删除。
boolean delete();
void deleteOnExit(); 在程序退出时删除文件。
3. 判断。
boolean canExcute(); 判断是否可执行
boolean exists(); 文件事是否存在。
isFile(); 文件
isDirectory(); 文件夹
isHidden();//java 能失去文件中的暗藏文件然而对暗藏文件时不能拜访的
isAbsolute();// 绝对路径即时不存在也能失去。
4. 获取信息。
getName();
getPath();
getParent();
4. 三种文件创建形式:
**File file = new File(“E:/…”);// 文件 / 文件夹门路对象
File file = new File(“…” ,””…);// 父目录绝对路径 + 子目录名称
File file = new File(“…”,”…”);// 父目录 File 对象 + 子目录名称 **
file.exists(): 判断文件 / 文件夹是否存在
file.delete(): 删除文件 / 文件夹
file.isDirectory(): 判读是否为目录
file.isFile(): 判读是否为文件夹
**file.mkdir(): 创立文件夹(仅限一级目录)
file.mkdirs(): 创立多及目录文件夹(包含但不限一级目录)**
file.createNewFile(): 创立文件
file.getAbsolutePath(): 失去文件 / 文件夹的绝对路径
file.getName(): 失去文件 / 文件夹的名字
file.String(): 同样是失去文件 / 文件夹的绝对路径等于 file.getAbsolutePath()
file.getParent(): 失去父目录的绝对路径 String 不能够调用能够调用 mkdir() 办法
file.getParentFile():失去父目录的绝对路径的返回值是 File 型能够调用 mkdir()办法
String[] gdir.list(): 失去目录的子目录 \ 文件的名称(不是绝对路径)
File[] dir.listFiles(): 失去目录的子目录 \ 文件事是否存在。
戳我支付:Java 根底材料 pdf
最初的最初,为了节俭大家在网上搜寻材料的工夫来学习,也能够分享给身边好友一起学习。给文章留个小赞,就能够收费支付啦~