새로운 java.io을 작성하는 방법메모리에 파일이 있습니까?
신규 작성 방법File
(출처:java.io
하드디스크가 아닌 메모리로요?
자바어를 사용하고 있습니다.파일을 하드 드라이브에 저장하지 않습니다.
API가 잘못되어 있습니다(java.util.jar.JarFile
)를 기다리고 있습니다.File file
의String filename
파일이 없습니다(만).byte[]
임시 파일을 만들 수 있지만 아름다운 솔루션은 아닙니다.서명된 항아리 다이제스트의 유효성을 확인해야 합니다.
byte[] content = getContent();
File tempFile = File.createTempFile("tmp", ".tmp");
FileOutputStream fos = new FileOutputStream(tempFile);
fos.write(archiveContent);
JarFile jarFile = new JarFile(tempFile);
Manifest manifest = jarFile.getManifest();
임시 파일을 생성하지 않고 매니페스트를 얻는 방법에 대한 예를 들어 주시면 감사하겠습니다.
하드 디스크가 아닌 메모리에 (java.io에서) 새로운 파일을 작성하려면 어떻게 해야 합니까?
헷갈릴 수도 있어File
그리고.Stream
:
- A은(는) 파일 및 디렉토리 경로 이름을 추상적으로 표현한 것입니다.사용방법
File
오브젝트에서는 파일시스템 내의 파일 메타데이터에 액세스하여 이 파일시스템 상의 파일에 대해 파일 삭제 또는 작성 등의 작업을 수행할 수 있습니다.근데...File
클래스는 파일 내용을 읽고 쓰는 메서드를 제공하지 않습니다. - 파일을 읽고 쓰려면
Stream
오브젝트(또는 등).이러한 스트림을 생성할 수 있습니다.File
파일을 읽고 쓰는 데 사용됩니다.
파일 읽기 및 쓰기와 마찬가지로및 을 사용하여 바이트버퍼에서 읽고 쓰기를 함으로써 메모리에 있는 바이트버퍼를 기반으로 스트림을 작성할 수 있습니다.그byte
array에는 "파일" 콘텐츠가 포함되어 있습니다.필요 없습니다.File
반대합니다.
둘 다File...
및 그ByteArray...
개울이 상속되다java.io.OutputStream
그리고.java.io.InputStream
공통 슈퍼클래스를 사용하여 파일 또는 바이트 배열에서 읽을지 여부를 숨길 수 있습니다.
를 작성할 수 없습니다.java.io.File
(Java 힙) 메모리에 콘텐츠를 보관합니다.*
대신 보통 스트림을 사용합니다.메모리의 스트림에 쓰려면 다음 명령을 사용합니다.
OutputStream out = new ByteArrayOutputStream();
out.write(...);
그러나 유감스럽게도 스트림을 입력으로 사용할 수 없습니다.java.util.jar.JarFile
말씀하신 대로 사용할 수 있는 것은File
또는String
유효한 JAR 파일의 경로가 포함됩니다.다른 API를 사용하고 싶지 않다면 현재와 같은 임시 파일을 사용하는 것이 유일한 선택이라고 생각합니다.
API를 , API 를면면면면면면면면면면면면면 in in in in in in in in in in in in in in라는 이름의 .JarInputStream
사용할 수 있습니다.해 주세요.archiveContent
로 ByteArrayInputStream
하려면 , JAR를 사용합니다.
try (JarInputStream stream = new JarInputStream(new ByteArrayInputStream(archiveContent))) {
Manifest manifest = stream.getManifest();
}
*) RAM 디스크와 같이 메모리에 상주하는 완전한 파일 시스템을 작성하는 것은 분명 가능하지만 Java 프로세스에 관한 한 "디스크"에 상주하는 것은 가능합니다.
Jimfs와 같은 메모리 내 파일 시스템을 사용할 수 있습니다.
다음은 Readme의 사용 예를 제시하겠습니다.
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);
저는 임시 파일이 그것에 대한 또 다른 해결책이 될 수 있다고 생각합니다.
File tempFile = File.createTempFile(prefix, suffix, null);
FileOutputStream fos = new FileOutputStream(tempFile);
fos.write(byteArray);
여기에 그것에 대한 답이 있다.
언급URL : https://stackoverflow.com/questions/17595091/how-to-create-a-new-java-io-file-in-memory
'programing' 카테고리의 다른 글
v-module을 사용할 때 div 내에서 작동하지 않는 이벤트를 클릭합니다. - vue js (0) | 2022.10.15 |
---|---|
standard_init_linux.go: exec 사용자 프로세스로 인해 "exec 형식 오류"가 발생했습니다. (0) | 2022.10.15 |
PHP의 "Headers already sent" 오류를 수정하는 방법 (0) | 2022.10.15 |
도커에 GD 설치 (0) | 2022.10.15 |
Mysql/Maridb Python Connector가 테이블에 데이터를 로드하지 않습니다. (0) | 2022.10.15 |