File
- 相对路径文件或目录
- 绝对路径文件或目录
- File(String pathname) 文件路径或目录
- File(String parent, String child) 父文件路径, 和子文件名
- File(File parent, String child) 父文件路径file, 和子文件名
import java.io.File;
public class Demo1_File {
public static void main(String[] args) {
// Demo1();
// Demo2();
File parentFile = new File("/usr/local/etc/nginx/");
String child = "nginx.conf";
File file = new File(parentFile, child);
}
private static void Demo2() {
String parent = "/usr/local/etc/nginx/";
String child = "nginx.conf";
File file = new File(parent,child);
System.out.println(file.exists());
}
// a.c 与 src 在同级目录下
private static void Demo1() {
File file = new File("/usr/local/etc/nginx/nginx.conf");
System.out.println(file.exists());
File file2 = new File("a.c");
System.out.println(file2.exists());
}
}
File 的方法
- boolean createNewFile() throws IOException 如果没有则创建true, 有则不创建false.
- boolean mkdir() 无则创建文件夹, 有则不创建false
- boolean mkdirs() 无则创建多级文件夹, 有则不创建false
import java.io.File;
import java.io.IOException;
public class Demo2_FileMethod {
public static void main(String[] args) throws IOException {
File file = new File("aaa.c");
System.out.println(file.createNewFile());
File file2 = new File("test");
System.out.println(file2.mkdir());
File file3 = new File("test/aaa");
System.out.println(file3.mkdirs());
}
}
- boolean renameTo(File dest) 就是mv命令
- boolean delete() 删除文件或删除空文件夹, 文件夹内有文件或文件夹(空的也算)则删除不了
import java.io.File;
import java.io.IOException;
public class Demo3_FileMethod {
public static void main(String[] args) throws IOException {
File file1 = new File("aaa.c");
File file2 = new File("bbb.c");
System.out.println(file1.renameTo(file2));
System.out.println(file2.delete());
File file3 = new File("test/aaa");
System.out.println(file3.delete());
File file4 = new File("test/ccc");
System.out.println(file4.mkdirs());
file4.delete();
File file5 = new File( "test");
System.out.println(file5.delete());
}
}
- boolean isDirectory() 判断是否文件夹
- boolean isFile() 判断是否文件
- boolean exists() 判断是否存在
- boolean canRead() 判断是否可读权限
- boolean canWrite() 判断是否可写权限
- boolean isHidden() 判断是否隐藏
import java.io.File;
import java.io.IOException;
public class Demo4_FileMethod {
public static void main(String[] args) throws IOException {
File file1 = new File("test");
System.out.println(file1.isDirectory());
File file2 = new File("test.c");
System.out.println(file1.isFile());
System.out.println(file2.isFile());
File file3 = new File("aaa.c");
System.out.println(file3.exists());
System.out.println(file3.createNewFile());
System.out.println(file3.exists());
File file4 = new File("ccc.c");
System.out.println(file4.createNewFile());
System.out.println(file4.canRead());
File file5 = new File("ddd.c");
System.out.println(file5.createNewFile());
System.out.println(file5.canWrite());
File file6 = new File("root.c");
System.out.println(file6.setReadable(false));
System.out.println(file6.canRead());
System.out.println(file6.canWrite());
File file7 = new File("test.c");
System.out.println(file7.isHidden());
File file8 = new File(".idea");
System.out.println(file8.isHidden());
}
}
- String getAbsolutePath()
- String getPath()
- String getName()
- long length()
- long lastModified()
- String[] list()
- File[] listFiles()
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo5_FileMethod {
public static void main(String[] args) {
File file = new File("aaa.c");
File file2 = new File("/Users/test/IdeaProjects/day19/");
System.out.println(file.getAbsoluteFile());
System.out.println(file2.getAbsoluteFile());
System.out.println(file.getPath());
System.out.println(file2.getPath());
System.out.println(file.getName());
System.out.println(file2.getName());
System.out.println(file.length());
System.out.println(file2.length());
System.out.println(file.lastModified());
System.out.println(file2.lastModified());
Date date = new Date(file.lastModified());
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(simpleDateFormat.format(date));
String [] arr = file.list();
// for(String s: arr){
// System.out.println(s);
// }
String [] arr2 = file2.list();
for(String s: arr2){
System.out.println(s);
}
File[] list1 = file.listFiles();
// for(File f : list1){
// System.out.println(f);
// }
File[] list2 = file2.listFiles();
for(File f : list2){
System.out.println(f);
}
}
}
练习 查找文件夹下所有的.c结尾的文件
- 遍历所有的文件, 碰到文件夹则进入遍历
- 文件名字正则匹配, 匹配输出
- 或使用String endsWith 匹配
import java.io.File;
public class Demo6_FileTest {
public static void main(String[] args) {
File file = new File("/Users/test/workplace/test");
File file2 = new File("/Users/test/workplace/test");
File[] arrFile = file.listFiles();
File[] arrFile2 = file2.listFiles();
String regex = ".*[\\.][c]$";
String strEnd = ".c";
fileFind(arrFile, strEnd);
fileFindRegex(arrFile2, regex);
}
public static void fileFind(File[] file, String strEnd){
for(File f : file){
if(f.isDirectory()){
fileFind(f.listFiles(), strEnd);
} else{
if( f.getName().endsWith(strEnd) ){
System.out.println(f.getName());
}
}
}
return ;
}
public static void fileFindRegex(File[] file, String regex){
for(File f : file){
if(f.isDirectory()){
fileFindRegex(f.listFiles(), regex);
} else{
if( f.getName().matches(regex) ){
System.out.println(f.getName());
}
}
}
return ;
}
}
String[] list(FilenameFilter filter) 实现FilenameFilter 接口, 返回匹配的数组
原码
public String[] list(FilenameFilter filter) {
String names[] = list();
if ((names == null) || (filter == null)) {
return names;
}
List<String> v = new ArrayList<>();
for (int i = 0 ; i < names.length ; i++) {
if (filter.accept(this, names[i])) {
v.add(names[i]);
}
}
return v.toArray(new String[v.size()]);
}
练习, test下.c结尾的文件, 仅有一级目录
import java.io.File;
import java.io.FilenameFilter;
public class Demo7_FileMethod {
public static void main(String[] args) {
File dir = new File("/Users/test/workplace/test");
String [] arr = dir.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
File file = new File(dir, name);
return file.isFile() && file.getName().endsWith(".c");
}
});
for (String str : arr){
System.out.println(dir+"/" + str);
}
}
}