我有一段代码,我必须读取一个文件以获取其可能的内容。
我遇到了同样的路径操作错误。
PFB代码:
while ((ze = zis.getNextEntry()) != null) {
String fileName = ze.getName();
String esapiFileName = ESAPI.encoder().canonicalize(fileName);
boolean esapiValidFileName = ESAPI.validator().isValidFileName("upload", esapiFileName, false);
String _completefileNamePath = null;
if (esapiValidFileName) {
_completefileNamePath = _destination + esapiFileName;
// Below line having Path Manipulation error
FileOutputStream fos = new FileOutputStream(new File(_completefileNamePath).getCanonicalFile());
// Path Manipulation error ends
while ((size = zis.read(buffer, 0, buffer.length)) != -1) {
fos.write(buffer, 0, size);
}// while
fos.flush();
fos.close();
zis.closeEntry();
}
}
最佳答案
你的路径是相对路径还是绝对路径?
顺便说一句,在打开 FileOutputStream
之前,您实际上不需要获取规范文件:
FileOutputStream fos = new FileOutputStream(_completefileNamePath);
或
FileOutputStream fos = new FileOutputStream(new File(_completefileNamePath));
或
import java.nio.file.Files;
import java.nio.file.Paths;
while ((ze = zis.getNextEntry()) != null) {
String fileName = ze.getName();
String esapiFileName = ESAPI.encoder().canonicalize(fileName);
boolean esapiValidFileName = ESAPI.validator().isValidFileName("upload", esapiFileName, false);
String _completefileNamePath = null;
if (esapiValidFileName) {
_completefileNamePath = _destination + esapiFileName;
// optional: Files.createDirectories(Paths.get(_completefileNamePath).getParent());
Files.copy(zis, Paths.get(_completefileNamePath));
zis.closeEntry();
}
}
关于java - 文件名的路径操作错误修复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30099996/