Guava---文件操作Files

guava复制文件

private static String from = "D:\\自定义代码\\Guava\\guava\\src\\1.txt";
private static String to = "D:\\自定义代码\\Guava\\guava\\src\\2.txt";

Files.copy(new File(from),new File(to));

java NIO复制文件

java.nio.file.Files.copy(Paths.get(from),
                Paths.get(to), StandardCopyOption.REPLACE_EXISTING);

移动文件

//to若存在,将被删除,重新生成
Files.move(new File(from),new File(to));

读取文件内容(一行一行读)

List<String> strings = Files.readLines(new File(to), Charsets.UTF_8);

读取文件内容(按条件读取)

private static void guavaReadFilesProcess() throws IOException {
        LineProcessor<List<String>> lineProcessor = new LineProcessor<List<String>>() {
            List<String> list = new ArrayList<>();
            @Override
            public boolean processLine(String s) throws IOException {
                System.out.println("读到内容:" + s);
                list.add("前缀-" + s);
                return true;   //return false,不再读取下面内容
            }

            @Override
            public List<String> getResult() {
                System.out.println("返回结果: "+ list);
                return list;
            }
        };
        List<String> strings = Files.asCharSource(new File(to), Charsets.UTF_8).readLines(lineProcessor);
        System.out.println(strings);
    }
   	   /**
         *  读到内容:java
         *  读到内容:C++
         *  读到内容:PHP
         *  返回结果: [前缀-java, 前缀-C++, 前缀-PHP]
         *  [前缀-java, 前缀-C++, 前缀-PHP]
         */

计算文件hashcode (可对比两个文件是否一样)

//Hashing.md5();Hashing.sha256()
HashCode hash = Files.asByteSource(new File(to)).hash(Hashing.sha512());

写文件

 		String path = "D:\\自定义代码\\Guava\\guava\\src\\2.txt";
        File file = new File(path);
        Files.asCharSink(file, Charsets.UTF_8).write("hhhh");
        String read = Files.asCharSource(file, Charsets.UTF_8).read();
        System.out.println("读取: "+ read);

        //追加内容
        Files.asCharSink(file, Charsets.UTF_8, FileWriteMode.APPEND).write("\nhhhh2");
        String read2 = Files.asCharSource(file, Charsets.UTF_8).read();
        System.out.println("读取: "+ read2);

获取某路径目录

public static void main(String[] args) {
        String path = "D:\\自定义代码\\Guava\\guava\\src\\main";
        File file = new File(path);
        //获取path下子目录
        Iterable<File> childrens = Files.fileTreeTraverser().children(file);
        for (File children : childrens) {
            System.out.println("子目录: " + children);

        }
        //获取path下所有目录  preOrderTraversal postOrderTraversal顺序不一样
        FluentIterable<File> files = Files.fileTreeTraverser().preOrderTraversal(file);
        for (File file1 : files) {
            System.out.println("全目录: " + file1);
        }
        /**
         子目录: D:\自定义代码\Guava\guava\src\main\java
         子目录: D:\自定义代码\Guava\guava\src\main\resources
         全目录: D:\自定义代码\Guava\guava\src\main
         全目录: D:\自定义代码\Guava\guava\src\main\java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\cache
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\cache\LRU
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\cache\LRU\LinkedHashLRUcache.java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\cache\LRU\LRUcache.java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\cache\LRU\Test.java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\cache\reference
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\cache\reference\Phantom_Reference.java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\cache\reference\Soft_Reference.java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\cache\reference\StrongReference.java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\cache\reference\Weak_Reference.java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\ClassScaner.java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\evenbus
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\evenbus\AbstractListener.java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\evenbus\mybus
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\evenbus\mybus\Bus.java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\evenbus\mybus\MyDispatcher.java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\evenbus\mybus\MyEvenBus.java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\evenbus\mybus\MyEvenContext.java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\evenbus\mybus\MyEvenExceptionHandle.java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\evenbus\mybus\MyRegistry.java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\evenbus\mybus\MySubscribe.java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\evenbus\mybus\MySubscriber.java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\evenbus\SimpleEventBus.java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\evenbus\SimpleListener.java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\evenbus\test
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\evenbus\test\EventBusTest.java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\evenbus\test\MyListener.java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\files
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\files\FilesTest.java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\GuavaApplication.java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\monitorFile
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\monitorFile\DirectoryTargetMonitor.java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\monitorFile\MainTest.java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\monitorFile\TargetMonitor.java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\ratelimit
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\ratelimit\RateLimitTest.java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\utils
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\utils\CharMatchsTest.java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\utils\JoinerTest.java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\utils\PreconditionsTest.java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\utils\SplitterTest.java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\utils\StopWatchTest.java
         全目录: D:\自定义代码\Guava\guava\src\main\java\com\cai\ya\utils\StringsTest.java
         全目录: D:\自定义代码\Guava\guava\src\main\resources
         全目录: D:\自定义代码\Guava\guava\src\main\resources\application.properties
         全目录: D:\自定义代码\Guava\guava\src\main\resources\io
         全目录: D:\自定义代码\Guava\guava\src\main\resources\io\2.txt
         全目录: D:\自定义代码\Guava\guava\src\main\resources\io\rest.txt
         全目录: D:\自定义代码\Guava\guava\src\main\resources\log4j2.xml
        */
    }

获取某路径目录(自定义过滤)

public static void main(String[] args) {
        String path = "D:\\自定义代码\\Guava\\guava\\src\\main";
        File file = new File(path);                //preOrderTraversal postOrderTraversal顺序不一样
        FluentIterable<File> files = Files.fileTreeTraverser().preOrderTraversal(file).filter(new Predicate<File>() {
            @Override
            public boolean apply(@Nullable File input) {
                return input.isFile();  //只要文件
            }
        });
        for (File file1 : files) {
            System.out.println(file1);
        }
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值