boolean canRead()
测试应用程序是否可以读取由此抽象路径名表示的文件。
boolean canWrite()
测试应用程序是否可以修改由此抽象路径名表示的文件。
boolean delete()
删除由此抽象路径名表示的文件或目录。
boolean exists()
测试此抽象路径名表示的文件或目录是否存在。
File getAbsoluteFile()
返回此抽象路径名的绝对形式。
String getAbsolutePath()
返回此抽象路径名的绝对路径名字符串。
File getCanonicalFile()
返回此抽象路径名的规范形式。
getName()
返回由此抽象路径名表示的文件或目录的名称。
举例:
[
Absolute path: E:\Work\javaBean\javaBeanLearn\file\createTest1
Can red: true
Can write: true
getName: createTest1
getParent: E:\Work\javaBean\javaBeanLearn\file
getPath: E:\Work\javaBean\javaBeanLearn\file\createTest1
length: 0
lastModified: 1588680296260
]
It`s a derictory
[
Absolute path: E:\Work\javaBean\javaBeanLearn\file\testRname.txt
Can red: true
Can write: true
getName: testRname.txt
getParent: E:\Work\javaBean\javaBeanLearn\file
getPath: E:\Work\javaBean\javaBeanLearn\file\testRname.txt
length: 0
lastModified: 1588580270798
]
It`s a File
String[] list()
返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。
File[] listFiles()
返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件。
File[] listFiles(FileFilter filter)
返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。
boolean isDirectory()
测试此抽象路径名表示的文件是否为目录。
boolean isFile()
测试此抽象路径名表示的文件是否为普通文件。
boolean isHidden()
测试此抽象路径名命名的文件是否为隐藏文件。
long lastModified()
返回此抽象路径名表示的文件上次修改的时间。
long length()
返回由此抽象路径名表示的文件的长度。
boolean mkdir()
创建由此抽象路径名命名的目录。
boolean mkdirs()
创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。
package com.zachary.io.file;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import com.zachary.util.PPrint;
/**
* @author Zachary.Zheng
* @version 1.0
* @date 2020年5月4日 下午4:00:17
*/
public class MakeDirectories {
private static void usage() {
System.err.println("Usage:\n" +
"MakeDirectories path1 ...\n" +
"Create each path\n" +
"Usage:\n" +
"MakeDirectories -d path1 ...\n" +
"Create each path\n" +
"Usage:\n" +
"MakeDirectories -r path1 path2\n" +
"Create each path1 to path2");
System.exit(0);
}
private static void fileData(File f) {
List<String> list = new ArrayList<String>();
list.add("Absolute path: " + f.getAbsolutePath());
list.add("Can red: " + f.canRead());
list.add("Can write: " + f.canWrite());
list.add("getName: " + f.getName());
list.add("getParent: " + f.getParent());
list.add("getPath: " + f.getPath());
list.add("length: " + f.length());
list.add("lastModified: " + f.lastModified());
PPrint.pprint(list);
if(f.isFile()) {
System.out.println("It`s a File");
}else if(f.isDirectory()) {
System.out.println("It`s a derictory");
}
}
private static void rnameFile(String[] args) {
File old = new File(args[0]);
File rname = new File(args[1]);
old.renameTo(rname);
fileData(old);
fileData(rname);
}
private static void deleteFiles(String[] args) {
File file;
for(String arg: args) {
file = new File(arg);
fileData(file);
if(file.exists()) {
System.out.println(file + " exists");
System.out.println("deleting ...");
file.delete();
}
}
}
private static void createFiles(String[] args) {
File file;
for(String arg: args) {
file = new File(arg);
if(!file.exists()) {
System.out.println(file + "Doesn`t exists");
// 创建以此抽象路径名命名的目录,包括任何必需但不存在的父目录。请注意,如果此操作失败,则可能已成功创建了一些必需的父目录。
file.mkdirs();
System.out.println("created");
}else {
System.out.println(file + " exists");
}
}
}
public static void main(String[] args) {
// 查看file属性
File file = new File("E:\\Work\\javaBean\\javaBeanLearn\\file\\test.txt");
fileData(file);
// 修改文件名称
rnameFile(new String [] {"E:\\Work\\javaBean\\javaBeanLearn\\file\\test.txt",
"E:\\Work\\javaBean\\javaBeanLearn\\file\\testRname.txt"});
String [] fileNames = {"E:\\Work\\javaBean\\javaBeanLearn\\file\\createTest1",
"E:\\Work\\javaBean\\javaBeanLearn\\file\\createTest2"};
// 创建文件夹
createFiles(fileNames);
// 删除文件夹
deleteFiles(fileNames);
}
}
执行结果:
[
Absolute path: E:\Work\javaBean\javaBeanLearn\file\test.txt
Can red: false
Can write: false
getName: test.txt
getParent: E:\Work\javaBean\javaBeanLearn\file
getPath: E:\Work\javaBean\javaBeanLearn\file\test.txt
length: 0
lastModified: 0
]
[
Absolute path: E:\Work\javaBean\javaBeanLearn\file\test.txt
Can red: false
Can write: false
getName: test.txt
getParent: E:\Work\javaBean\javaBeanLearn\file
getPath: E:\Work\javaBean\javaBeanLearn\file\test.txt
length: 0
lastModified: 0
]
[
Absolute path: E:\Work\javaBean\javaBeanLearn\file\testRname.txt
Can red: true
Can write: true
getName: testRname.txt
getParent: E:\Work\javaBean\javaBeanLearn\file
getPath: E:\Work\javaBean\javaBeanLearn\file\testRname.txt
length: 0
lastModified: 1588580270798
]
Its a File E:\Work\javaBean\javaBeanLearn\file\createTest1Doesn
t exists
created
E:\Work\javaBean\javaBeanLearn\file\createTest2Doesnt exists created [ Absolute path: E:\Work\javaBean\javaBeanLearn\file\createTest1 Can red: true Can write: true getName: createTest1 getParent: E:\Work\javaBean\javaBeanLearn\file getPath: E:\Work\javaBean\javaBeanLearn\file\createTest1 length: 0 lastModified: 1588680296260 ] It
s a derictory
E:\Work\javaBean\javaBeanLearn\file\createTest1 exists
deleting …
[
Absolute path: E:\Work\javaBean\javaBeanLearn\file\createTest2
Can red: true
Can write: true
getName: createTest2
getParent: E:\Work\javaBean\javaBeanLearn\file
getPath: E:\Work\javaBean\javaBeanLearn\file\createTest2
length: 0
lastModified: 1588680296260
]
It`s a derictory
E:\Work\javaBean\javaBeanLearn\file\createTest2 exists
deleting …
打印文件目录工具类
package com.zachary.io.file.util;
import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Pattern;
import com.zachary.util.PPrint;
/**
* @author Zachary.Zheng
* @version 1.0
* @date 2020年5月4日 下午12:01:34
*/
public final class Directory {
// 根据文件名称过滤文件
public static File[] local(File file, String regex) {
return file.listFiles(new FilenameFilter(){
Pattern pattern = Pattern.compile(regex);
@Override
public boolean accept(File dir, String name) {
return pattern.matcher(new File(name).getName()).matches();
}
});
}
public static File[] local(String path, final String regex) {
return local(new File(path), regex);
}
public static class TreeInfo implements Iterable<File> {
public List<File> files = new ArrayList<File>();
public List<File> dirs = new ArrayList<File>();
@Override
public Iterator<File> iterator() {
return files.iterator();
}
void addAll(TreeInfo other) {
this.files.addAll(other.files);
this.dirs.addAll(other.dirs);
}
@Override
public String toString() {
return "TreeInfo files=" + PPrint.pformat(files) + "\n\ndirs=" + PPrint.pformat(dirs);
}
public static TreeInfo walk(String start, String regex) {
return recurseDirs(new File(start), regex);
}
public static TreeInfo walk(File start, String regex) {
return recurseDirs(start, regex);
}
public static TreeInfo walk(File start) {
return recurseDirs(start, ".*");
}
public static TreeInfo walk(String start) {
return recurseDirs(new File(start), ".*");
}
static TreeInfo recurseDirs(File startDirs, String regex) {
TreeInfo result = new TreeInfo();
for (File item : startDirs.listFiles()) {
if(item.isDirectory()) {
result.dirs.add(item);
result.addAll(recurseDirs(item, regex));
}else {
if(item.getName().matches(regex)) {
result.files.add(item);
}
}
}
return result;
}
public static void main(String[] args) {
if(args.length == 0) {
System.out.println(walk("./src"));
}else {
System.out.println(walk("./src", args[0]));
}
}
}
}
执行结果:
TreeInfo files=[
.\src\com\zachary\io\criterion\ChangeSystemOut.java
.\src\com\zachary\io\criterion\Echo.java
.\src\com\zachary\io\criterion\Redirecting.java
.\src\com\zachary\io\file\DirList.java
.\src\com\zachary\io\file\DirList2.java
.\src\com\zachary\io\file\DirList3.java
.\src\com\zachary\io\file\MakeDirectories.java
.\src\com\zachary\io\file\test\DirectoryTest.java
.\src\com\zachary\io\file\util\BinaryFile.java
.\src\com\zachary\io\file\util\Directory.java
.\src\com\zachary\io\file\util\ProcessFiles.java
.\src\com\zachary\io\file\util\TextFile.java
.\src\com\zachary\io\input\BufferedInputFile.java
.\src\com\zachary\io\input\FormattedMemoryInput.java
.\src\com\zachary\io\input\MemoryIput.java
.\src\com\zachary\io\output\BasicFileOutput.java
.\src\com\zachary\io\output\FileOutputShortcut.java
.\src\com\zachary\io\output\StoringAndRecoveringData.java
.\src\com\zachary\io\output\text\BasicFileOutputTest.java
.\src\com\zachary\io\output\UsingRandomAccessFile.java
.\src\com\zachary\util\PPrint.java
]
dirs=[
.\src\com
.\src\com\zachary
.\src\com\zachary\io
.\src\com\zachary\io\criterion
.\src\com\zachary\io\file
.\src\com\zachary\io\file\test
.\src\com\zachary\io\file\util
.\src\com\zachary\io\input
.\src\com\zachary\io\output
.\src\com\zachary\io\output\text
.\src\com\zachary\util
]