我想使用相对路径在新目录中创建一个文件。创建目录“tmp”很容易。
但是,当我创建文件时,它只是位于当前目录而不是新目录中。代码行如下。
File tempfile = new File("tempfile.txt");
也尝试了这个:
File tempfile = new File("\\user.dir\\tmp\\tempfile.txt");
显然,我误解了这种方法的工作原理。非常感谢您的帮助。
编辑:添加了当前使用的代码行以及我认为可能用于清除混淆的相对路径的代码行。
答案 0 :(得分:27)
File dir = new File("tmp/test");
dir.mkdirs();
File tmp = new File(dir, "tmp.txt");
tmp.createNewFile();
BTW:测试使用@Rule和TemporaryFolder类来创建临时文件或文件夹
答案 1 :(得分:4)
您可以使用带有两个参数的构造函数创建相对于目录的路径:http://docs.oracle.com/javase/6/docs/api/java/io/File.html
例如:
File tempfile = new File("user.dir/tmp", "tempfile.txt");
顺便说一下,反斜杠“\”只能在Windows上使用。在几乎所有情况下,您都可以使用便携式正斜杠“/".
答案 2 :(得分:2)
String routePath = this.getClass().getClassLoader().getResource(File.separator).getPath();
System.out.println(routePath);
/*for finding the path*/
String newLine = System.getProperty("line.separator");
BufferedWriter bw = new BufferedWriter(new FileWriter(new File(routePath+File.separator+".."+File.separator+"backup.txt"), true));
/*file name is backup.txt and this is working.*/
答案 3 :(得分:0)
Let say you have "Local-Storage" on your project folder and you want to put a text or whatever file using file write.
File file = new File(dir,fileName ); //KEY IS DIR ex."./local-storage/" and fileName='comp.html'
// if file doesnt exists, then create it
if ( ! file.exists( ) )
{
file.createNewFile( );
}
FileWriter fw = new FileWriter( file.getAbsoluteFile( ) );
BufferedWriter bw = new BufferedWriter( fw );
bw.write( text );