Я пытаюсь скопировать файл из внешней папки в локальную папку в папке проекта Java. Проблема в том, что я не хочу вставлять точный URL-адрес локальной папки назначения, поскольку он может не работать, если проект перемещен в другое место. Итак, есть ли способ получить папку назначения по коду (автоматически даже при перемещении)?
Это функция, которую я использовал для копирования
private static void copyToUpload(File source,String name) throws IOException {
String tail = source.getName().substring(source.getName().lastIndexOf("."));
Files.copy(source.toPath(), (new File("src/"+name+tail)).toPath(), StandardCopyOption.REPLACE_EXISTING);
}
Называется:
> protected void doPost(HttpServletRequest request, HttpServletResponse
> response) throws ServletException, IOException {
> File src = new File(request.getParameter("selectedFile"));
> copyToUpload(src, "hello"); }
Ожидаемое:
src: C:\\..\test.jpg
des: C:\\Test\src\test.jpg
Фактический:
NoSuchFileException
Трассировка стека:
> java.nio.file.NoSuchFileException:
> C:\Users\Admin\Downloads\60788720_1251034635090935_8981200640877264896_n.jpg
> -> src\hello.jpg
> sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:79)
> sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
> sun.nio.fs.WindowsFileCopy.copy(WindowsFileCopy.java:205)
> sun.nio.fs.WindowsFileSystemProvider.copy(WindowsFileSystemProvider.java:278)
> java.nio.file.Files.copy(Files.java:1274)
> controller.upload.copyToUpload(upload.java:30)
> controller.upload.doPost(upload.java:78)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
> org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)