2012-01-30 2 views
0

私の要件はそうです。私は実際にドライブにoutputstreamを書き込むためのターゲットファイルを持っていません。それで、キャッシュ自体にファイルを作成することは可能ですか? Javaを使用する。キャッシュにファイルを作成する

+0

キャッシュとはどういう意味ですか?メモリ内ファイルですか? – breezee

答えて

0

ByteArrayOutputStream私はあなたがディスクに書き込むのではなくメモリのストリームに書き込むことができると思っています。

CPUまたはディスクのキャッシュを参照している場合は、なぜ、どのようなことを達成しようとしていますか?

+0

サーバーに書き込み権限がありません。 ByteArrayInputStreamでは、私はpdfファイルを取得しています。このファイルをポップアップで表示する必要があります。 – user1168880

+0

PDFをどのように表示しようとしていますか?ビューアがサポートするファイルを渡す方法を使用する必要があります。あなたは一時的なエリアを書くことができませんか? (これはほとんどのシステムで書き込み可能です) 'System.getProperty(" java.io.tmpdir ")' –

0

キャッシュにはプログラムにアクセスできません。メモリに比較的高価なフェッチ数を減らすために、プロセッサにローカルなデータを格納するための置換ポリシーが使用されます。

あなたは実際にメモリに書きたいと思っていますが、Linux環境下で共有メモリ/dev/shmを使ってこれを行うことができます。これはファイルシステムにマップされたシステムメモリの一部です。 java.nio.channels.FileChannelあなたはメモリのマッピングされたファイルを考えている場合this code

0

を見ていると、これが結合している方法の例については、この

//: c12:LargeMappedFiles.java 
// Creating a very large file using mapping. 
import java.io.*; 
import java.nio.*; 
import java.nio.channels.*; 

public class LargeMappedFiles { 
    static int length = 0x8FFFFFF; // 128 Mb 
    public static void main(String[] args) throws Exception { 
    MappedByteBuffer out = 
     new RandomAccessFile("test.dat", "rw").getChannel() 
     .map(FileChannel.MapMode.READ_WRITE, 0, length); 
    for(int i = 0; i < length; i++) 
     out.put((byte)'x'); 
    System.out.println("Finished writing"); 
    for(int i = length/2; i < length/2 + 6; i++) 
     System.out.print((char)out.get(i)); 
    } 
} ///:~ 

サンプルがあるhere

0

から、作成に参照のうえさを試してみてください一時ファイルですか?試してみてください

File.createTempFile(); 
関連する問題