Как заменить backSlash (\) на forwardSlash (/) в `java.nio.file.Path`? - PullRequest
2 голосов
/ 16 октября 2019

Я сохраняю файл Multipart и использую класс Path java.nio.file.Path. И в этом Path Я получаю путь C:\for\expample\, но мне нужен путь, подобный этому C:/for/expample/. Здесь я делюсь своим кодом, где я пытался это сделать, но, к сожалению, я не получил верный путь с пересылкой слешей.

public String saveFile(MultipartFile theFile, String rootPath, String filePath , String fileNme) throws Exception {
        try {

            Path fPath = null;
            if(theFile != null) {

                Path path = Paths.get(rootPath, filePath);
                if(Files.notExists(path)) {
                    //Create directory if one does not exists
                    Files.createDirectories(path);
                }
                String fileName;
                //Create a new file at that location
                if(fileNme == "") {
                    fileName = theFile.getOriginalFilename();
                }else {
                    fileName = fileNme;
                }

                fPath = Paths.get(rootPath, filePath, fileName);
                if(Files.isRegularFile(fPath) && Files.exists(fPath)) {
                    Files.delete(fPath);
                }

                StringWriter writer = new StringWriter();
                IOUtils.copy(theFile.getInputStream(), writer, StandardCharsets.UTF_8);

                File newFile = new File(fPath.toString());
                newFile.createNewFile();

                try (OutputStream os = Files.newOutputStream(fPath)) {
                    os.write(theFile.getBytes());
                }
            }
            return this.replaceBackslashes(fPath == null ? "" :fPath.normalize().toString());

        }catch (IOException e) {
            e.printStackTrace();
            throw new Exception("Error while storing the file");
        }
    }

Ответы [ 2 ]

2 голосов
/ 16 октября 2019

попробуй

return fPath == null ? "" : fPath.normalize().toString().replace("\\","/");

0 голосов
/ 16 октября 2019

Преобразуйте полный путь в строку и используйте регулярное выражение, например

String str = fPath.toString();
str = str.replace("\\", "/");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...