课后作业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.编写一个文件分割工具,能把一个大文件分割成多个小的文件。并且能再次把它们合并起来得到完整的文件。

暂时不会。

原文地址:https://www.cnblogs.com/my---world/p/9990106.html