在guava中数据的移除分为被动移除和主动移除薯薯两种
被动移除数据的方式,guava默认提供了三种方式:
基于大小的移除
看字面意思就知道就是按照缓存的大小来移除,如果即将到达指定的大小,那就会把不常用的键值对从cache中移除。
guava提供了两个基于时间移除的方法
expireAfterAccess(long, TimeUnit) 这个方法是根据某个键值对最后一次访问之后多少时间后移除
基于引用的缓碰移除
这种移除方式主要是基于java的垃圾回收机制,根据键或者值的引用关系决定移除,个人对垃圾回收这块不是非常了解,窃以为不太可靠。。也不常用。。所以没有研究,数哪者欢迎补充。
主动移除数据方式
主动移除有三种方法:
单独移除用 Cache.invalidate(key)
批量移除用 Cache.invalidateAll(keys)
移除所有用 Cache.invalidateAll()
复制文件//通过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)
2、移动文件
//to若存在,将被删除,重新生成
Files.move(new File(from),new File(to))
3、按山前锋行读取文件
//读取文件悔闭第一行
String configJson = Files.readFirstLine(file, Charsets.UTF_8)
//将文件每一行读到list里逗晌
List readLines = Files.readLines(file, Charsets.UTF_8)
//按照条件,将文件每行读到list里
Files.readLines(file, Charsets.UTF_8, new LineProcessor>() {
List list = new ArrayList()
@Override
public List getResult() {
return list
}
@Override
public boolean processLine(String arg0) throws IOException {
// TODO Auto-generated method stub
return false
}
})
4、计算文件hashcode (可对比两个文件是否一样)
//Hashing.md5()Hashing.sha256()
HashCode hash = Files.asByteSource(new File(to)).hash(Hashing.sha512())
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)