Java 如何为ImageOutputStream自动创建缺少的文件夹?
我正在尝试使用自定义压缩保存Java 如何为ImageOutputStream自动创建缺少的文件夹?,java,javax.imageio,Java,Javax.imageio,我正在尝试使用自定义压缩保存jpg图像。因此,请按如下方式使用ImageWriter: ImageOutputStream os = new FileImageOutputStream(new File(filenamepath)); ImageWriter jpgWriter = ImageIO.getImageWritersByFormatName("jpg").next(); ImageWriteParam jpgWriteParam = jpgWriter.getDefaultWrit
jpg
图像。因此,请按如下方式使用ImageWriter
:
ImageOutputStream os = new FileImageOutputStream(new File(filenamepath));
ImageWriter jpgWriter = ImageIO.getImageWritersByFormatName("jpg").next();
ImageWriteParam jpgWriteParam = jpgWriter.getDefaultWriteParam();
jpgWriteParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
jpgWriteParam.setCompressionQuality(1f);
jpgWriter.setOutput(os);
问题:仅当filenamepath
中给定的文件夹已存在时,代码才起作用,如果缺少文件夹,则抛出FileNotFoundException
问题:如何让编写器创建目标文件夹?您需要先创建它。如果文件不存在,则不会创建该文件 这可以通过使用来轻松完成。此方法检查目录是否已存在,如果不存在,则创建它 创建一个新目录。对于可能影响目录的所有其他文件系统活动而言,检查文件是否存在和创建目录(如果不存在)是一个原子操作 如果还需要创建所有父目录,可以使用: 通过首先创建所有不存在的父目录来创建目录 示例代码:
File.createDirectories(Paths.get(filenamepath));
请注意,最好使用JavaNIO.2API,而不是旧的
createNewFile()
:您可以轻松处理授予已创建目录的权限。此外,它还迫使开发人员处理无法创建目录的情况(并提供更多关于原因的信息,而不是像在createNewFile()
案例中那样仅使用true
或false
。这是否也适用于文件名路径中的任何父目录和子目录?@membersound在这种情况下,你可以使用CreateDirectory,我用它编辑。好的,但是这个方法需要一个路径
,但是我需要一个文件
对象显式地为文件ImageOutputStream
提供信息。那么我必须创建一个文件和一个路径对象?您可以使用静态工厂Path.get
获取路径。我编辑了SSO,如何从路径
将文件
对象传递到输出流
?