【发布时间】:2014-04-21 07:12:57
【问题描述】:
我想创建一个具有特定名称的临时文件(在应用程序关闭时消失)。我正在使用此代码:
f = File.createTempFile("tmp", ".txt", new File("D:/"));
这会创建类似D:\tmp4501156806082176909.txt 的内容。我只想要D:\tmp.txt。我该怎么做?
【问题讨论】:
标签: java
我想创建一个具有特定名称的临时文件(在应用程序关闭时消失)。我正在使用此代码:
f = File.createTempFile("tmp", ".txt", new File("D:/"));
这会创建类似D:\tmp4501156806082176909.txt 的内容。我只想要D:\tmp.txt。我该怎么做?
【问题讨论】:
标签: java
在这种情况下,不要使用createTempFile。 createTempFile 的重点是生成“垃圾”名称以避免名称混淆。
您应该使用File.createNewFile() 或直接写入文件。哪个更适合您的用例。然后,您可以调用 File.deleteOnExit() 让 VM 负责清理文件。
【讨论】:
如果您只想创建tmp.txt,则只需使用createNewFile() 创建文件,而不是createTempFile()。 createTempFile 用于创建在反复创建时不应具有相同名称的临时文件。
还可以查看this post,它展示了一种创建文件的非常简单的方法。
拍了上面提到的帖子:
String path = "C:"+File.separator+"hello"+File.separator+"hi.txt";
//(use relative path for Unix systems)
File f = new File(path);
//(works for both Windows and Linux)
f.mkdirs();
f.createNewFile();
【讨论】:
File.separator 不是一个好习惯。它可能会导致可移植性问题(具体来说,在一个操作系统上编译的类会将 File.separator 内联为该操作系统的值,因此在不同的操作系统上运行时它可能无法按预期工作)。最好使用始终有效的new File(dirName, childName)。在您的情况下,new File(new File("C:", "hello"), "hi.txt");。不确定new File("C:"),我从未尝试过(不是 Windows 的普通用户)。
尝试正则表达式
fileName = fileName.replaceAll("\\d", "");
【讨论】: