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
⚠️ **GitHub.com Fallback** ⚠️