如何安全地将字符串组合成文件路径并打开文件编写器?
How to safely combine strings into file path and open filewriter?
是否有更优雅的方法来执行以下操作?
try (FileWriter myWriter = new FileWriter(Paths.get(folder,fileName).toAbsolutePath().toString())){
我有文件夹路径和文件名作为字符串,我想安全地组合它们。例如如果
String folder = "/tmp/"
String fileName = "/myfile.txt"
不要以
结束
"/tmp//myfile.txt"
或与
String folder = "/tmp"
String fileName = "myfile.txt"
不要以
结束
"/tmpmyfile.txt"
我使用的方式是将字符串转换为路径再转换回字符串,感觉很奇怪,但看起来 FileWriter 不直接接受路径。
有没有比我这个更优雅的解决方案?
使用Files.newBufferedWriter(Path, OpenOption...)
.
try (Writer myWriter = Files.newBufferedWriter(Paths.get(folder, fileName))) {
// other code
}
请注意,虽然 FileWriter
构造函数使用 JVM 的默认编码,但此方法使用通常被认为更有用的 UTF-8
编码。如果您需要复制 FileWriter
构造函数的行为,请使用
Files.newBufferedWriter(path, Charset.defaultCharset());
是否有更优雅的方法来执行以下操作?
try (FileWriter myWriter = new FileWriter(Paths.get(folder,fileName).toAbsolutePath().toString())){
我有文件夹路径和文件名作为字符串,我想安全地组合它们。例如如果
String folder = "/tmp/"
String fileName = "/myfile.txt"
不要以
结束"/tmp//myfile.txt"
或与
String folder = "/tmp"
String fileName = "myfile.txt"
不要以
结束"/tmpmyfile.txt"
我使用的方式是将字符串转换为路径再转换回字符串,感觉很奇怪,但看起来 FileWriter 不直接接受路径。
有没有比我这个更优雅的解决方案?
使用Files.newBufferedWriter(Path, OpenOption...)
.
try (Writer myWriter = Files.newBufferedWriter(Paths.get(folder, fileName))) {
// other code
}
请注意,虽然 FileWriter
构造函数使用 JVM 的默认编码,但此方法使用通常被认为更有用的 UTF-8
编码。如果您需要复制 FileWriter
构造函数的行为,请使用
Files.newBufferedWriter(path, Charset.defaultCharset());