2012-01-30 3 views
0

필자의 요구 사항은 내 드라이브에 실제로 출력 파일을 기록 할 대상 파일이 없습니다. 그렇다면 캐시 자체에 파일을 만들 수 있습니까? Java 사용.캐시에 파일을 만듭니다.

+0

캐시 란 무엇입니까? 메모리 내 파일? – breezee

답변

0

내가 원하는 것은 디스크에 쓰는 대신 메모리에있는 스트림에 쓸 수있는 ByteArrayOutputStream입니다.

CPU 또는 디스크 캐시를 언급하는 경우 왜, 그리고 무엇을 달성하려고하는지 말할 수 있습니까?

+0

서버에 쓰기 권한이 없습니다. ByteArrayInputStream에서는 pdf 파일을 얻고 있는데,이 파일은 메모리에서 제안한대로 팝업으로 표시해야합니다. – user1168880

+0

PDF를 어떻게 표시 하시겠습니까? 뷰어에서 지원하는 파일을 전달하는 방법을 사용해야합니다. 임시 영역을 작성할 수 없습니까? (이것은 거의 모든 시스템에서 쓸 수 있습니다)'System.getProperty ("java.io.tmpdir")' –

0

캐시는 프로그램에 액세스 할 수 없으므로 메모리에서 상대적으로 비용이 많이 드는 페치 수를 줄이기 위해 대체 정책을 사용하여 프로세서에 로컬 데이터를 저장합니다.

실제로 메모리에 쓰고 싶습니다. 리눅스 환경에서 공유 메모리 /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(); 
관련 문제