c、c ++、golang、java、.netのメモリにファイルシステムのライブラリがあるかどうか知りたいのですが
目的は、一時ファイルをメモリに保存することであり、ユーザーアクセスではなく、プログラムの内部使用のみを目的としているため、RAMドライブは必要ありません。
Java NIOを使用してメモリ内ファイルシステムを作成するためのJimFSと呼ばれるGoogleが開発したライブラリがあります。これは、Apache 2ライセンスの下でオープンソースであり、GitHub で利用できます。非常に使いやすいです。
try (FileSystem fs = Jimfs.newFileSystem(Configuration.unix())) {
Path foo = fs.getPath("/foo");
Files.createDirectory(foo);
Path hello = foo.resolve("hello.txt"); // /foo/hello.txt
Files.write(hello, ImmutableList.of("hello world"), StandardCharsets.UTF_8);
// Close the FileSystem when you're done with it so it can be garbage collected.
}
javaを使用する場合:commonsvfsはRAMファイルシステムタイプをサポートします
C ++では、最も簡単な解決策は
std::ostringstream
、データを文字列に入れてから、それ
std::istringstream
を再読み取りすることです。非推奨に
strstream
なりましたが、動的な割り当てとコピーを回避できます(データの最大サイズを事前に知っていると仮定します)。または、あなたはそれをするためにあなた自身streambuf
を簡単に書くことができます。または、もちろん、フォーマットが必要ない場合は、データをにプッシュするだけですstd::vector
。
IIRC、Javaにはメモリベースのストリームもあります(Byte []に基づくと思います)。
.Netには、使用できるMemoryStreamクラス(System.IO)があります:http: //msdn.microsoft.com/en-us/library/system.io.memorystream.aspx