Java NIO |路径和;文件|如何使用从其他对象获取的自定义名称创建自定义文件和文件夹?

Java NIO |路径和;文件|如何使用从其他对象获取的自定义名称创建自定义文件和文件夹?,java,nio,Java,Nio,代码如下: public void storePartsFile(MultipartFile file, Long jobNumber) { Path path = Paths.get("C:\\DocumentRepository\\" +jobNumber + "\\Parts\\" + file.getOriginalFilename() ); try { Files.write(path, f

代码如下:

public void storePartsFile(MultipartFile file, Long jobNumber) {
        Path path = Paths.get("C:\\DocumentRepository\\" +jobNumber + "\\Parts\\" + file.getOriginalFilename() );
        try {
            Files.write(path, file.getBytes());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
以下是例外情况:

java.nio.file.NoSuchFileException: C:\DocumentRepository\12\Parts\b.pdf
    at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:79)
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102)
    at sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:230)
    at java.nio.file.spi.FileSystemProvider.newOutputStream(FileSystemProvider.java:434)
    at java.nio.file.Files.newOutputStream(Files.java:216)
    at java.nio.file.Files.write(Files.java:3292)
它在路径上查找文件,并表示未找到此类文件

这是我需要在本地存储的新文件


已尝试StandardOpenOption.CREATE\u NEW,但无效。

错误表明
C:\DocumentRepository\12\Parts
不是现有目录。file.write()将不会生成目录,无论您将其作为标准打开选项传递

此外,您的异常处理也已中断。修复你的IDE模板,那是不好的。我已经在下面的片段中修复了这个问题

如果您的目的是在目录尚不存在时始终创建该目录:

public void storePartsFile(MultipartFile file, Long jobNumber) throws IOException {
        Path path = Paths.get("C:\\DocumentRepository\\" +jobNumber + "\\Parts\\" + file.getOriginalFilename() );
        Files.createDirectories(path.getParent());
        Files.write(path, file.getBytes());
}

注意:如果你不想让你的方法抛出IOException(你可能错了,一个名为“savePartsFile”的方法肯定会抛出IOException),那么正确的\(ツ)/''我不知道如何处理它异常处理程序的代码是
抛出新的RuntimeException(“Uncaught”,e)
,而不是您所拥有的。抛出runtimeexception意味着保留有关错误的所有相关信息,代码执行停止,而不是或多或少地默默地继续执行,忘记发生了错误。

错误表明
C:\DocumentRepository\12\Parts
不是现有目录。Files.write()不会生成目录,无论您作为标准打开选项传递什么

你的异常处理也被破坏了。修复你的IDE模板,这不好。我在下面的代码片段中修复了这个问题

如果您的目的是在目录尚不存在时始终创建该目录:

public void storePartsFile(MultipartFile file, Long jobNumber) throws IOException {
        Path path = Paths.get("C:\\DocumentRepository\\" +jobNumber + "\\Parts\\" + file.getOriginalFilename() );
        Files.createDirectories(path.getParent());
        Files.write(path, file.getBytes());
}

注意:如果你不想让你的方法抛出IOException(你可能错了,一个名为“savePartsFile”的方法肯定会抛出IOException),那么正确的\(ツ)/''我不知道如何处理它异常处理程序的代码是
抛出新的RuntimeException(“Uncaught”,e)
,而不是您所拥有的。抛出runtimeexception意味着保留有关错误的所有相关信息,并且代码执行停止,而不是或多或少地默默地继续执行,忘记发生了错误。

如果包含pdf的目录不存在,您可以检查包含pdf的目录是否不存在你可以查一下