File类

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\createTest1Doesnt 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 ] Its 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
]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值