Java - Как создать файл в каталоге с помощью относительного пути

Я хочу создать файл в новом каталоге, используя относительный путь. Создание каталога "tmp" достаточно просто.

Однако, когда я создаю файл, он просто находится в текущем каталоге, а не в новом. Ниже приведена строка кода.

    File tempfile = new File("tempfile.txt");

Попробовали это также:

    File tempfile = new File("\\user.dir\\tmp\\tempfile.txt");

Ясно, что я не понимаю, как работает этот метод. Ваша помощь очень ценится.

EDIT: добавленная в настоящее время используемая строка кода, а также та, которая, как я думаю, может работать для относительного пути для устранения путаницы.

Ответы

Ответ 1

File dir = new File("tmp/test");
dir.mkdirs();
File tmp = new File(dir, "tmp.txt");
tmp.createNewFile();

BTW: для тестирования используйте классы @Rule и TemporaryFolder для создания временных файлов или папок

Ответ 2

Вы можете создавать пути относительно каталога с конструкторами, которые принимают два аргумента: http://docs.oracle.com/javase/6/docs/api/java/io/File.html

Например:

File tempfile = new File("user.dir/tmp", "tempfile.txt");

Кстати, обратная косая черта "\" может использоваться только в Windows. Почти во всех случаях вы можете использовать переносимую косую черту "/".

Ответ 3

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.*/

Ответ 4

Скажем, у вас в папке проекта "Локальное хранилище" , и вы хотите поместить текст или любой другой файл с помощью файла записи.

  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 );