Java使用输入输出流完成,剪切,复制,粘贴,删除的功能(最好是代码解决此问题,比较直观,谢谢)

Java使用输入输出流完成,剪切,复制,粘贴,删除的功能(最好是代码解决此问题,比较直观,谢谢)模拟Windows系统完成4大功能,其中路径由用户从键盘输入,操作是否成功请给出提示

你可以看看Java的NIO的包和FileVisitor interface以及walkFileTree方法,这里写两个例子,一个删除一个复制,代码来自于oracle

删除

Path start = ...
     Files.walkFileTree(start, new SimpleFileVisitor<Path>() {
         @Override
         public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
             throws IOException
         {
             Files.delete(file);
             return FileVisitResult.CONTINUE;
         }
         @Override
         public FileVisitResult postVisitDirectory(Path dir, IOException e)
             throws IOException
         {
             if (e == null) {
                 Files.delete(dir);
                 return FileVisitResult.CONTINUE;
             } else {
                 // directory iteration failed
                 throw e;
             }
         }
     });

复制

final Path source = ...
     final Path target = ...

     Files.walkFileTree(source, EnumSet.of(FileVisitOption.FOLLOW_LINKS), Integer.MAX_VALUE,
         new SimpleFileVisitor<Path>() {
             @Override
             public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs)
                 throws IOException
             {
                 Path targetdir = target.resolve(source.relativize(dir));
                 try {
                     Files.copy(dir, targetdir);
                 } catch (FileAlreadyExistsException e) {
                      if (!Files.isDirectory(targetdir))
                          throw e;
                 }
                 return CONTINUE;
             }
             @Override
             public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
                 throws IOException
             {
                 Files.copy(file, target.resolve(source.relativize(file)));
                 return CONTINUE;
             }
         });
温馨提示:答案为网友推荐,仅供参考
相似回答