我正在接收来自外部进程的字符串。我想使用这个 String 来创建一个文件名,然后写入该文件。下面是我的代码片段:
String s = ... // comes from external source
File currentFile = new File(System.getProperty("user.home"), s);
PrintWriter currentWriter = new PrintWriter(currentFile);
如果 s 包含无效字符,比如基于 Unix 的操作系统中的“/”,那么将抛出 java.io.FileNotFoundException (正确)。
我如何安全地编码字符串,以便它可以用作一个文件名?
编辑: 我所希望的是一个 API 调用,它可以为我完成这个任务。
我能做到:
String s = ... // comes from external source
File currentFile = new File(System.getProperty("user.home"), URLEncoder.encode(s, "UTF-8"));
PrintWriter currentWriter = new PrintWriter(currentFile);
但是我不确定 URLEncoder 是否可靠。