파일 목록에서 Zip 파일을 만드는 함수가 있습니다. 디스크에 저장하지 않고 Zip 파일을 반환 할 수 있습니까? 다른 함수의 매개 변수로 zip 파일을 사용해야하므로 파일이 필요합니다. 나는 ByteStream이 나를위한 옵션이 될지 확신하지 못한다.자바에서 ZipOutputStream에서 Zip 파일을 반환하십시오.
public File compressFileList(List<File> fileList,String fileName) {
FileOutputStream fileOutputStream=null;
ZipOutputStream zipOutputStream=null;
FileInputStream fileInputStream=null;
String compressedFileName=fileName +".zip";
if(fileList.isEmpty())
return null;
try
{
fileOutputStream = new FileOutputStream(compressedFileName);
zipOutputStream = new ZipOutputStream(new BufferedOutputStream(fileOutputStream));
for (File file: fileList) {
fileInputStream = new FileInputStream(file);
ZipEntry zipEntry = new ZipEntry(file.getName());
zipOutputStream.putNextEntry(zipEntry);
byte[] tmp = new byte[4*1024];
int size = 0;
while((size = fileInputStream.read(tmp)) != -1){
zipOutputStream.write(tmp, 0, size);
}
zipOutputStream.flush();
fileInputStream.close();
}
zipOutputStream.close();
return compressedFile; //This is what I am missing
}
catch (FileNotFoundException e)
{
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
편집 :
아이디어는 zip 파일을 생성하고 왓슨의 VisualRecognition 서비스의 CreateClassifierOptions 방법을 사용하는 것입니다 유스 케이스를 추가.
classifierOptions = new CreateClassifierOptions.Builder()
.classifierName("Santa")
.addClass("Santa", new File("C:\\app\\GitRepo\\images\\beagle.zip"))
.negativeExamples(new File("C:\\app\\GitRepo\\images\\nosport.zip"))
.build();
빌더는 zip 파일을 매개 변수로 허용합니다. 알렉상드르 Dupriez의 설명을 바탕으로
이해
, 나는 하드 디스크에 어떤 장소에 파일을 저장하는 것이 좋습니다 생각합니다.
다른 함수는 입력으로 무엇을 동의 하는가? 'Inputstream'? – Lino
Zip 파일을 입력으로 허용하는 WatsonService API를 사용하고 있습니다.또는 어쩌면 내가 임시 zip 파일을 만들고 함수에 반환해야합니다. – Vini
질문이 메서드 서명과 충돌합니다. File 객체는 기본적으로 어떤 경로에 저장된 파일에 대한 참조이지만 파일의 (바이트) 내용을 반환하는 것과 관련하여 질문하는 것 같습니다. 따라서 파일을 어딘가에 저장하지 않으려면 File 객체를 반환하면 안됩니다. –