将文件保存在 Java 中不存在的路径中

Saving a file in non-existent path in Java

我正在创建一个简单的 client/server 应用程序,让服务器从客户端接收文件。在此应用程序中,如果文件位于给定的基本路径内,客户端还可以决定将文件存储在服务器文件系统中的何处。

问题是如果客户端发送一个路径,服务器创建,即这个字符串作为路径:C:\basePath\newFolder\file.xml。如果 newFolder 在当前文件系统中不存在,它会抛出这个错误:

Error: C:\remtServer\prova\t.xml (Access denied)

还有这两个错误,但我认为它们无关紧要,因为它们源自第一个错误:

[Fatal Error] :1:8: XML document structures must start and end within the same entity.
Error: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 8; XML document structures must start and end within the same entity.

我对Java不是很了解,所以可能是小事,但我想不通。

这是服务器中的代码:

public static void receive(String token, String fileName, String filePath, int length) throws IOException{

        // Stream for binary data and file transfer
        OutputStream out = new FileOutputStream(basePath + filePath + fileName);
        InputStream in = socket.getInputStream();

        // Variables 
        int bytesRead;

        // Bytes for store info to be sent
        byte[] buffer = new byte[length];

        //-------------------------
        // Send file 
        //------------------------- 

        while((bytesRead = in.read(buffer)) > 0){
            out.write(buffer, 0, bytesRead);

            if (bytesRead < 1024) {
                break;
            }

        } // while

        //-------------------------
        // End of file transfer
        //-------------------------
        

        out.close();
    } // receive

错误是因为目录不存在。我怎样才能创建目录来解决这个问题?不然怎么解决?

在服务器端,以下代码make所有目录(假设服务器端的Java运行有必要的文件权限)

File f = ...; // The file path the client has submitted
File dir = null;
if (f.isFile()) {
  dir = f.getParentFile();
} else dir = f;
dir.mkdirs();