File相关操作,java.nio.file.*

本文介绍如何使用Java进行文件的基本操作,包括获取文件属性、创建、复制和移动文件等,并展示了如何利用Java NIO的WatchService来监控指定目录下的文件变动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.获取文件

Path pathFile = Paths.get("e:/dc/MyTest.txt");
System.out.println(pathFile.getFileName());
System.out.println(Files.getLastModifiedTime(pathFile));        //文件最后修改时间
System.out.println(Files.size(pathFile));                       //文件大小
System.out.println(Files.isSymbolicLink(pathFile));             //是否是符号链接
System.out.println(Files.isDirectory(listings));                //文件是否是目录
System.out.println(Files.readAttributes(pathFile,"*"));            //读取文件所有属性

//通过搜索目录找到相应的文件

Path listings = Paths.get("E:/workspace_IJ/HelloTest/src");
Files.walkFileTree(listings, new FindJavaFile());
private static class FindJavaFile extends SimpleFileVisitor<Path>{
   @Override
   public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
      if (file.toString().endsWith(".java")){
         System.out.println(file.getFileName());
      }
      return FileVisitResult.CONTINUE;
   }
}
得到该目录下的.java文件。
2.操作文件
//创建文件
Path target = Paths.get("e:/dc/MyTest.sh");
Files.createFile(target);
//复制文件
Path source = Paths.get("e:/dc/MyTest.txt");
Path target1 = Paths.get("D:/Test/MyTest2.txt");
Files.copy( target1,source, StandardCopyOption.REPLACE_EXISTING);      //复制文件操作,最后一个参数表示覆盖即替换已有文件
//移动文件
Path target2 = Paths.get("D:/Test/test/MyTest3.txt");
Files.move(source, target2,StandardCopyOption.REPLACE_EXISTING);       //移动文件操作
3.监控目录下文件状态
private static void watchFile(){
   try {
      WatchService watchService = FileSystems.getDefault().newWatchService();
      Path dir = FileSystems.getDefault().getPath("D:/Test/");
      WatchKey key = dir.register(watchService, new WatchEvent.Kind[]{ENTRY_MODIFY,ENTRY_CREATE,ENTRY_DELETE});

      System.out.println(key);
      while(1==1){
         key = watchService.take();
         for(WatchEvent<?> event: key.pollEvents()){
            if(event.kind() == ENTRY_MODIFY){
               System.out.println("Home dir changed!");
               System.out.println(event.context()+"修改了!!!!");
            }else if(event.kind() == ENTRY_CREATE){
               System.out.println("new file created");
               System.out.println(event.context()+"新建了!!!!");
            }else if(event.kind() == ENTRY_DELETE){
               System.out.println("file has deleted");
               System.out.println(event.context()+"被删除了!!!!");
            }
         }
         key.reset();
      }
   } catch (IOException | InterruptedException e) {
      System.out.println(e.getMessage());
   }
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值