【发布时间】:2015-09-17 19:20:43
【问题描述】:
我正在使用 DeferredFileOutputStream 将文件写入磁盘。我已将大小阈值指定为 10K,有时如果文件大小小于阈值,则文件不会进入物理位置。我认为它保留在内存中。 在这种情况下,我需要显式写入磁盘吗?
public static void main(String[] args) {
try {
FileOutputStream fos = new FileOutputStream(new File(
"atest.zip"));
DeferredFileOutputStream differedFileOutputStream = new DeferredFileOutputStream(1, new File(
"atest.zip"));
ZipOutputStream zos = new ZipOutputStream(differedFileOutputStream);
String file5Name = "folder/android.pdf";
String file1Name = "file1.txt";
String file2Name = "file2.txt";
String file3Name = "folder/file3.txt";
String file4Name = "folder/file4.txt";
addToZipFile(file1Name, zos);
addToZipFile(file2Name, zos);
addToZipFile(file3Name, zos);
addToZipFile(file4Name, zos);
zos.close();
differedFileOutputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void addToZipFile(String fileName, ZipOutputStream zos) throws FileNotFoundException, IOException {
System.out.println("Writing '" + fileName + "' to zip file");
File file = new File(fileName);
FileInputStream fis = new FileInputStream(file);
ZipEntry zipEntry = new ZipEntry(fileName);
zos.putNextEntry(zipEntry);
byte[] bytes = new byte[1024];
int length;
while ((length = fis.read(bytes)) >= 0) {
zos.write(bytes, 0, length);
}
zos.closeEntry();
fis.close();
}
【问题讨论】:
标签: java fileoutputstream