Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为ImageOutputStream自动创建缺少的文件夹?_Java_Javax.imageio - Fatal编程技术网

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,如何从
路径
文件
对象传递到
输出流