Java Каталог создания файлов по пути - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь написать какой-нибудь текстовый файл, используя код java. Примерно так, как показано ниже.

public class MyMain {
    public static void main(String args[]) throws Exception
    {
        File file = new File("./qweasd/khh/sdafasd/asd.txt");
        file.mkdirs();

        try {

            BufferedWriter bw = new BufferedWriter(new FileWriter(file));
            bw.write("hello world!");
            bw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

Поскольку я не могу быть уверен, что asd.txt и используемый каталог существуют. Я использовал mkdirs. Но «asd.txt» также распознается как каталог. Итак, BuffereredWriter не может записывать значение.

Структура, как показано ниже.
enter image description here

Есть ли способ сделать "/ qweasd / khh / sdafasd / "как каталог и" asd.txt "как файл?

Ответы [ 3 ]

0 голосов
/ 18 июня 2020

Я бы сказал, что это работает так, как задумано. Вы должны удалить «/asd.txt» из своего файла и использовать этот путь, чтобы убедиться, что весь путь существует.

Затем вам нужно создать экземпляр другого файлового объекта с путем + имя файла для вашего файла записи.

public class MyMain {
    public static void main(String args[]) throws Exception
    {
        File folder = new File("./qweasd/khh/sdafasd");
        folder.mkdirs();
        File file = new File("./qweasd/khh/sdafasd/asd.txt");

        try {

            BufferedWriter bw = new BufferedWriter(new FileWriter(file));
            bw.write("hello world!");
            bw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

HTH

0 голосов
/ 18 июня 2020

Вы используете Java 6 или ниже? Если нет, попробуйте java.nio. Вы можете безопасно разрешать пути и проверять, существуют ли объекты файловой системы или нет.

См. Этот пример:

public static void main(String[] args) throws ParseException {
    // provide the path of the directory as String (relative paths are valid, too)
    String directoryPathString = "Y:\\our\\directory\\path\\";
    // along with the filename
    String filename = "somefile.txt";

    // create a Path object from the directory path you provided as String
    Path directoryPath = Paths.get(directoryPathString);

    try {
        // then create all directories that don't exist in the path
        Files.createDirectories(directoryPath);
        // create a path for the file by resolving the filename from the directory path
        Path filePath = directoryPath.resolve(filename);
        // then check if the file already exists (which may be obsolete in your case)
        if (Files.exists(filePath)) {
            // print a message about the file being already present
            System.out.println("File " 
                                + filePath.toAbsolutePath().toString()
                                + " already exists");
        } else {
            // and create it if it doesn't
            Files.createFile(filePath);
            System.out.println("File "
                                + filePath.toAbsolutePath().toString()
                                + " created");
        }
    } catch (IOException ioe) {
        // this is just a stack trace print, do something more appropriate here
        ioe.printStackTrace();
    }
}

Измените directoryPathString на тот, который вы хотите использовать.

0 голосов
/ 18 июня 2020
File dir = new File("./qweasd/khh/sdafasd");
if (!dir.isDirectory()) {
    dir.mkdirs();
}
File file = new File(dir, "asd.txt");

Чтобы создать каталог, путь должен быть каталогом, а не файлом.
Поэтому сначала убедитесь, что каталог существует, а если нет, то создайте его.

Обратите внимание, что Метод isDirectory() проверяет, существует ли путь и является ли он путем к каталогу.

Также обратите внимание, что если файл asd.txt не существует, он будет создан.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...