使用名称中的变量创建新文件名

时间:2012-03-12 02:35:16

标签: java io

尝试在名称中使用变量的特定目录中创建文件。但是,我在以下几行中保持get和IOException。

File dir = new File("logs/" + s);
dir.mkdirs();
File permfile = new File(dir, stamp + ".txt");
permfile.createNewFile();
boolean exist = permfile.createNewFile();

感谢您的指导。伊夫'今天已经12个小时了,一旦我可以写文件我就可以回家了! :)

3 个答案:

答案 0 :(得分:0)

编辑: sry对我来说似乎有点晚了,但尝试了你的代码并且它工作得很好,没有异常抛出:

            try{
            String s = "foldername";
            String stamp = "filename";
            File dir = new File("logs/" + s);
            dir.mkdirs();
            File permfile = new File(dir, stamp + ".txt");
            permfile.createNewFile();
            }
            catch(Exception k)
            { System.out.println("Oops");}

也许错误发生在其他地方?

答案 1 :(得分:0)

我可以看到一个可能的问题是当Windows使用 back 斜杠时,使用文字转发斜杠作为路径分隔符。您的系统可能会将正斜杠解释为名称的一部分,而不是分隔符,而在Windows中,正斜杠是illegal character for a filename

为了完全避免这个问题,我会让java API通过为你的dir文件使用适当的构造函数new File(String parent, String child)来排序分隔符(而不是自己构建文字路径),即:

File dir = new File("logs", s);

另一个问题是stamp可能包含对文件系统中的文件名不合法的字符。

答案 2 :(得分:0)

我会使用NIO API来执行此类任务。

Path dir = Paths.get("logs", s);
Files.createDirectories(dir);
Path permfile = dir.resolve(stamp + ".txt");
boolean exist = true;
if(!permfile.toFile().exists()) {
    Files.createFile(permfile);
    exist = false;
}