2012-01-30 1 views
0

Mon exigence est telle, je n'ai pas de fichier cible situé physiquement sur mon disque pour y écrire des flux de sortie. Alors, est-il possible de créer un fichier dans le cache lui-même? En utilisant Java.créer un fichier dans le cache

+0

Qu'entendez-vous par cache? un fichier en mémoire? – breezee

Répondre

0

Je suppose que ce que vous voulez est ByteArrayOutputStream qui vous permet d'écrire dans un flux en mémoire au lieu d'écrire sur le disque.

Si vous faites référence aux caches de CPU ou de disque, pouvez-vous dire pourquoi et ce que vous essayez d'accomplir?

+0

Je n'ai pas d'autorisation d'écriture sur le serveur. Dans ByteArrayInputStream, je reçois un fichier pdf, ce fichier que je dois afficher dans un popup, en utilisant comme suggéré par vous de la mémoire. – user1168880

+0

Comment envisagez-vous d'afficher le PDF? Vous devez utiliser un moyen de transmettre le fichier pris en charge par votre visionneuse. Êtes-vous sûr de ne pas pouvoir écrire la zone temporaire? (Ceci est accessible en écriture sur presque tous les systèmes) 'System.getProperty (" java.io.tmpdir ")' –

0

Le cache n'est pas accessible par programme, il utilise une politique de remplacement pour stocker des données locales au processeur afin de réduire le nombre d'extractions relativement coûteuses de la mémoire.

Je suppose que vous voulez vraiment écrire en mémoire, sous un environnement linux vous pouvez le faire en utilisant la mémoire partagée /dev/shm, c'est une partie de la mémoire système qui a été mappée sur un système de fichiers. Pour un exemple, comment cela est combiné avec java.nio.channels.FileChannel un coup d'oeil à this code

0

Si vous envisagez de mémoire les fichiers mis en correspondance, essayez cette

//: 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)); 
    } 
} ///:~ 

l'échantillon est de here

0

vous référenceurs à créer un fichier temporaire? Essayez

File.createTempFile(); 
Questions connexes