课后作业5
注:学习于博主 一往无前
动手动脑
1.使用Files. walkFileTree()找出指定文件夹下所有大于指定大小(比如1M)的文件。
import java.io.IOException; import java.nio.file.FileSystems; import java.nio.file.FileVisitOption; import java.nio.file.FileVisitResult; import java.nio.file.FileVisitor; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.attribute.BasicFileAttributes; import java.util.EnumSet; public class Calculatefile implements FileVisitor<Object> { private final long accepted_size; public Calculatefile(String glob,long accepted_size) { FileSystems.getDefault().getPathMatcher("glob:" +glob); this.accepted_size=accepted_size; } void search(Path file) throws IOException { long size = (Long) Files.getAttribute(file, "basic:size"); if(size <=accepted_size) { System.out.println(file); } } @Override public FileVisitResult postVisitDirectory(Object dir, IOException exc)throws IOException { return FileVisitResult.CONTINUE; } @Override public FileVisitResult preVisitDirectory(Object dir, BasicFileAttributes attrs)throws IOException { return FileVisitResult.CONTINUE; } @Override public FileVisitResult visitFile(Object file, BasicFileAttributes attrs)throws IOException { search((Path) file); return FileVisitResult.CONTINUE; } @Override public FileVisitResult visitFileFailed(Object file, IOException exc)throws IOException { return FileVisitResult.CONTINUE; } public static void main(String[] args) throws IOException{ String glob= "*.jpg"; long size = 1024; Path fileTree = Paths.get("D:/"); Calculatefile walk=new Calculatefile(glob, size); EnumSet<FileVisitOption> opts=EnumSet.of(FileVisitOption.FOLLOW_LINKS); System.out.println("D盘中大小于1KB的文件有"); Files.walkFileTree(fileTree, opts, Integer.MAX_VALUE, walk); } }
运行结果:
2.使用Files. walkFileTree()找出指定文件夹下所有扩展名为.txt和.java的文件。
import java.io.IOException; import java.nio.file.FileSystems; import java.nio.file.FileVisitResult; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.PathMatcher; import java.nio.file.Paths; import java.nio.file.SimpleFileVisitor; import java.nio.file.attribute.BasicFileAttributes; public class Findtxtandjava { public static void main(String args[]) throws IOException { String glob = "glob:**/*.{java,txt}"; String path = "D:\\eclipse-workspace\\Shiyan5"; match(glob, path); } public static void match(String glob, String location) throws IOException { final PathMatcher pathMatcher = FileSystems.getDefault().getPathMatcher( glob); Files.walkFileTree(Paths.get(location), new SimpleFileVisitor<Path>() { @Override public FileVisitResult visitFile(Path path, BasicFileAttributes attrs) throws IOException { if (pathMatcher.matches(path)) { System.out.println(path); } return FileVisitResult.CONTINUE; } @Override public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException { return FileVisitResult.CONTINUE; } }); } }
运行结果:
3.使用Files. walkFileTree()找出指定文件夹下所有包容指定字符串的txt文件。
目前不会。
课后作业
1.编写一个程序,指定一个文件夹,能自动计算出其总容量。
package bao; import java.io.File; import java.util.ArrayList; public class Calculatefile1 { static long size=0; private static ArrayList<String> filelist=new ArrayList<String>(); public static void main(String[] args) { Calculatefile1 s=new Calculatefile1(); String filePath="D:\\eclipse-workspace\\Shiyan5"; s.getFiles(filePath); } void getFiles(String filePath) { File root=new File(filePath); File[] files=root.listFiles(); for(File file:files) { if(file.isDirectory()) { getFiles(file.getAbsolutePath()); filelist.add(file.getAbsolutePath()); }else { size+=file.getAbsolutePath().length(); } } System.out.println("Size:"+size); } }
运行结果:
2.编写一个文件加解密程序,通过命令行完成加解密工作
暂时不会。
3.编写一个文件分割工具,能把一个大文件分割成多个小的文件。并且能再次把它们合并起来得到完整的文件。
暂时不会。