2015-05-22 17 views
6

Ich möchte ein einfaches In-Memory-Dateisystem in Java erstellen, das ein Stammverzeichnis hat und in der Lage ist, ein neues Unterverzeichnis zu erstellen. Im Verzeichnis können wir neue Dateien erstellen, in sie schreiben, von ihnen lesen, sie löschen und sie auch umbenennen. Können Sie mir bitte einen Rat geben, wo Sie anfangen sollen (ein einfacher Code oder ein Resouce).In-Memory-Dateisystem in Java

Antwort

4

Sie können In-Memory-Dateisystem in Java mit Google Jimfs und Java 7 NIO-Paket erstellen.

Bitte beachten Sie diesen Link. Hier erhalten Sie ein Beispiel-Tutorial: create In-memory file system in java

+0

Leider leidet jimfs einige Einschränkungen. Am besten verwenden Sie [memoryfilesystem] (https://github.com/marschall/memoryfilesystem). – fge

9

Ein benutzerdefinierter Dateisystem-Provider muss die Klasse java.nio.file.spi.FileSystemProvider implementieren. Ein Dateisystemanbieter wird durch ein URI-Schema wie Datei, jar, memory, cd identifiziert.

Diese Links bieten unterhalb gute Informationen Start

http://docs.oracle.com/javase/7/docs/technotes/guides/io/fsp/filesystemprovider.html

Der Link unten (nicht etwa im Systemspeicher-Datei) ist über das virtuelle Dateisystem. Es geht um einige Design-Probleme, die Ihnen helfen könnten, falls Sie sich entscheiden, ein eigenes Dateisystem zu erstellen.

http://www.flipcode.com/archives/Programming_a_Virtual_File_System-Part_I.shtml

Aber Sie immer code.This wird schneller und einfacher nutzen könnten bereits gebaut und getestet zu halten, und Sie werden Unterstützung bei der Fehlerbedingungen erhalten.

einen Blick auf jimfs Nehmen (In-Memory-Dateisystem für Java 7+)

https://github.com/google/jimfs

auch Virtual File System http://commons.apache.org/proper/commons-vfs/

Blick in

Commons

marschall (Eine im Speicher implementierte a JSR-203 Dateisystem) https://github.com/marschall/memoryfilesystem

+0

Das zweite Beispiel ist nicht wirklich für nio2 geeignet. Klassifizieren Sie sie besser;) – fge

+0

@fge Fügen Sie einige Informationen über den Link hinzu, um Verwirrung zu vermeiden. – Raj

+0

OK, aber das ist 2015; apache-common-vfs ist grundsätzlich veraltet :) – fge

2

Verwenden Sie memoryfilesystem.

Jimfs wurde in einer früheren Antwort erwähnt, aber memoryfilesystem behandelt viel mehr.

Beispiel Nutzung:

final FileSystem fs = MemoryFileSystem.newLinux().build("myfs"); 

final Path dir = fs.getPath("thedir"); 

Files.createDirectory(dir); 

etc etc. Verwenden Sie die java.nio.file API-Dateien in diese zu manipulieren (File wird nicht funktionieren!). Weitere Informationen finden Sie unter here.

+2

Ich brauche 'File' um im Speicher sowohl zum Lesen als auch zum Schreiben zu arbeiten. Irgendwelche Ideen? – Jus12