java - 如何安全地将字符串组合到文件路径并打开文件写入器?

标签 java file path

是否有更优雅的方法来执行以下操作?

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"

我使用的方法是将 String 转换为路径,然后再转换回 String,这感觉很奇怪,但看起来 FileWriter 不直接接受 Path 。

是否有比我现有的更优雅的解决方案?

最佳答案

使用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());

关于java - 如何安全地将字符串组合到文件路径并打开文件写入器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72142207/

相关文章:

c - 在 Mac OS X 上,如何将 POSIX fd 转换为 FILE*?

Ant 在 Windows 路径中找不到可执行文件

windows - 跨 Windows 操作系统的命令行提示路径

JAVA-SQL-数据迁移-结果集比较失败的 JUnit 测试

java - 有效地在两倍大的字符串中查找字符串

python - 名称错误 : name 'file' is not defined

python - 为什么我要将 python 添加到 PATH

java - 捕获运行时异常?

java - 如何使用泛型向 ArrayList 添加内容?

java - 在java中打开和关闭mp3文件