2015-05-22 15 views
6

Voglio creare un semplice file system in-memory in Java, che ha una directory root ed è in grado di creare una nuova sottodirectory. Nella directory possiamo creare nuovi file, scriverci, leggere da loro, cancellarli e rinominarli. Potete dare qualche consiglio da dove cominciare (un semplice codice o reso).File system in memoria in java

risposta

4

È possibile creare il file system in memoria in java utilizzando il pacchetto di Jim e Java NIO di Google.

Si prega di fare riferimento a questo link. Qui verrà visualizzato un esempio di tutorial: create In-memory file system in java

+0

Purtroppo jimfs presenta diverse limitazioni. La soluzione migliore è utilizzare [memoryfilesystem] (https://github.com/marschall/memoryfilesystem). – fge

9

Un provider di file system personalizzato deve implementare la classe java.nio.file.spi.FileSystemProvider. Un provider di file system è identificato da uno schema URI come file, jar, memoria, cd.

Questi link qui sotto forniscono buone informazioni a partire

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

Il link qui sotto (non si tratta di file system in memoria) è di circa il file system virtuale. Parla di alcuni problemi di progettazione che potrebbero aiutarti nel caso in cui decidessi di creare il tuo file system.

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

Ma si può sempre utilizzare già costruito e testato code.This sarà più veloce e più facile da mantenere e si riceveranno un sostegno in condizioni di errore.

Date un'occhiata a jimfs (un file system in memoria per Java 7+)

https://github.com/google/jimfs

Anche prendere in considerazione

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

marschall (Un'implementazione in memoria di un File system JSR-203) https://github.com/marschall/memoryfilesystem

+0

Il secondo esempio non è particolarmente adatto per nio2. Meglio classificarli;) – fge

+0

@fge Abbiamo aggiunto alcune informazioni sul link per evitare confusione. – Raj

+0

OK, ma questo è il 2015; apache-common-vfs è fondamentalmente obsoleto :) – fge

2

Utilizzare memoryfilesystem.

Jimfs è stato menzionato in una risposta precedente, ma memoryfilesystem gestisce molto di più.

Esempio utilizzo:

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

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

Files.createDirectory(dir); 

ecc ecc utilizzare l'API java.nio.file per manipolare i file in questo (File non funziona!). Vedi here per maggiori dettagli.

+2

Ho bisogno di 'File' per lavorare in memoria sia per la lettura che per la scrittura. Qualche idea? – Jus12