or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

configuration.mdfeatures-monitoring.mdfilesystem-creation.mdindex.mdpath-types.md
tile.json

tessl/maven-com-google-jimfs--jimfs

In-memory file system implementation for Java that provides complete java.nio.file API compatibility

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/com.google.jimfs/jimfs@1.3.x

To install, run

npx @tessl/cli install tessl/maven-com-google-jimfs--jimfs@1.3.0

index.mddocs/

Jimfs

Jimfs is an in-memory file system implementation for Java 8+ that provides complete compatibility with the java.nio.file abstract file system APIs. It enables developers to create virtual file systems in memory for testing, sandboxing, and temporary file operations without touching the actual filesystem.

Package Information

  • Package Name: com.google.jimfs:jimfs
  • Package Type: Maven
  • Language: Java 8+
  • Installation:
    <dependency>
      <groupId>com.google.jimfs</groupId>
      <artifactId>jimfs</artifactId>
      <version>1.3.0</version>
    </dependency>

Core Imports

import com.google.common.jimfs.Configuration;
import com.google.common.jimfs.Jimfs;
import java.nio.file.FileSystem;
import java.nio.file.Files;
import java.nio.file.Path;

Basic Usage

import com.google.common.jimfs.Configuration;
import com.google.common.jimfs.Jimfs;
import java.nio.file.FileSystem;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;

// Create a new in-memory file system with Unix-style configuration
FileSystem fs = Jimfs.newFileSystem(Configuration.unix());

// Create directories and files
Path workDir = fs.getPath("/work");
Files.createDirectory(workDir);

Path configFile = workDir.resolve("config.txt");
Files.write(configFile, Arrays.asList("key=value", "debug=true"), StandardCharsets.UTF_8);

// Read and manipulate files
List<String> lines = Files.readAllLines(configFile, StandardCharsets.UTF_8);
System.out.println("Config loaded: " + lines.size() + " lines");

Architecture

Jimfs is built around several key components:

  • File System Factory: Jimfs class provides static factory methods for creating configured file systems
  • Configuration System: Immutable Configuration objects define file system behavior, path types, and feature support
  • Path Type System: Abstract path handling supporting Unix, Windows, and Mac OS X style paths with appropriate behaviors
  • Feature System: Modular feature support for links, symbolic links, secure directory streams, and file channels
  • Attribute System: Extensible file attribute system supporting basic, POSIX, DOS, ACL, and custom attributes
  • Watch Service: Configurable directory watching with polling-based change detection

Capabilities

File System Creation

Factory methods for creating in-memory file systems with platform-specific or custom configurations.

public static FileSystem newFileSystem();
public static FileSystem newFileSystem(String name);
public static FileSystem newFileSystem(Configuration configuration);
public static FileSystem newFileSystem(String name, Configuration configuration);

File System Creation

Configuration

Comprehensive configuration system for customizing file system behavior, from path handling to storage limits.

public static Configuration unix();
public static Configuration osX();
public static Configuration windows();
public static Configuration forCurrentPlatform();
public static Builder builder(PathType pathType);
public Builder toBuilder();

Configuration

Path Types and Normalization

Path type system supporting different operating system conventions with Unicode normalization options.

public static PathType unix();
public static PathType windows();

public enum PathNormalization {
    NONE, NFC, NFD, CASE_FOLD_UNICODE, CASE_FOLD_ASCII
}

Path Types

Features and Watch Services

Optional feature system and configurable directory watching capabilities.

public enum Feature {
    LINKS, SYMBOLIC_LINKS, SECURE_DIRECTORY_STREAM, FILE_CHANNEL
}

public static WatchServiceConfiguration polling(long interval, TimeUnit timeUnit);

Features and Monitoring

Standard java.nio.file Integration

Jimfs file systems return standard FileSystem instances that work seamlessly with all java.nio.file APIs:

  • Files.createDirectory(), Files.createFile(), Files.delete()
  • Files.copy(), Files.move(), Files.walk()
  • Files.newInputStream(), Files.newOutputStream()
  • Files.newByteChannel(), FileChannel.open()
  • Files.newDirectoryStream(), WatchService support
  • All standard file attribute views: basic, owner, POSIX, DOS, ACL, user-defined

Thread Safety

  • Configuration objects are immutable and thread-safe
  • FileSystem instances support concurrent access from multiple threads
  • Configuration.Builder objects are not thread-safe and should not be shared between threads

Performance Characteristics

  • In-memory storage with configurable block size (default: 8KB)
  • Configurable maximum size (default: 4GB)
  • Configurable cache for freed blocks to reduce garbage collection
  • Watch service uses polling with configurable intervals (default: 5 seconds)