in memory file system - downgoon/hello-world GitHub Wiki
数据库,有内存数据库,比如H2;文件系统,也有内存文件系统,比如JimFS。
什么是JimFS? 它是 An in-memory file system for Java 7+,它完全实现 java.nio.file
的标准定义接口。以便我们可以随时替换成真是的文件系统,但是应用层代码可以丝毫不用变更。
创建的时候是Jimfs,然后就跟具体实现没关系,都是标准化接口。示例代码:
import com.google.common.jimfs.Configuration;
import com.google.common.jimfs.Jimfs;
java.nio.file.FileSystem fs = Jimfs.newFileSystem(Configuration.osX());
pom依赖:
<dependency>
<groupId>com.google.jimfs</groupId>
<artifactId>jimfs</artifactId>
<version>1.1</version>
</dependency>
完整代码:
import java.nio.charset.StandardCharsets;
import java.nio.file.FileSystem;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import com.google.common.collect.ImmutableList;
import com.google.common.jimfs.Configuration;
import com.google.common.jimfs.Jimfs;
public class FileUtilDemo {
public static void main(String[] args) throws Exception {
/*
* return An in-memory file system for Java 7+
*/
FileSystem fs = Jimfs.newFileSystem(Configuration.osX());
Path foo = fs.getPath("/foo");
Files.createDirectory(foo);
Path hello = foo.resolve("hello.txt"); // /foo/hello.txt
Files.write(hello, ImmutableList.of("hello world", "I'm an in-memory file system for Java 7+"),
StandardCharsets.UTF_8);
Path path = fs.getPath("/foo/hello.txt");
List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);
for (String line : lines) {
System.out.println(line);
}
}
}
演示代码地址:
$ git checkout memoryfs
$ git checkout memoryfs-c1-google