我从外部进程收到一个字符串.我想使用该String来创建文件名,然后写入该文件.这是我的代码片段:
String s = ... // comes from external source
File currentFile = new File(System.getProperty("user.home"), s);
PrintWriter currentWriter = new PrintWriter(currentFile);
Run Code Online (Sandbox Code Playgroud)
如果s包含无效字符,例如基于Unix的OS中的"/",则会(正确地)抛出java.io.FileNotFoundException.
如何安全地编码String以便它可以用作文件名?
编辑:我希望的是一个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);
Run Code Online (Sandbox Code Playgroud)
但我不确定URLEncoder是否可靠用于此目的.
Android上的文件名允许哪些特殊字符?
~!@#$%^&*()_+/\.,
Run Code Online (Sandbox Code Playgroud)
另外,我可以用Unicode名称保存文件吗?
不同的操作系统具有不同的文件名最大长度.在处理文件时,Java是否对文件名长度有任何限制?