将文件保存在 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();
我正在创建一个简单的 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();