Как создать новый текстовый файл на основе пользовательского ввода в Java? - PullRequest
0 голосов
/ 08 ноября 2018

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

import java.util.Scanner;
import java.io.File;

public class TestFile {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("Enter the desired name of your file: ");
        String fileName = input.nextLine();
        fileName = fileName + ".txt";

        File file = new File(fileName);
    }
}

Хотя, когда у меня нет пользователя, который вводит имя файла и просто пишется код с именем в кавычках, файл заканчивается созданием, когда я оглядываюсь в каталог.

File file = new File("TestFile.txt")

Почему он не создает файл, когда я пытаюсь использовать ввод строки пользователем?

Ответы [ 5 ]

0 голосов
/ 08 ноября 2018

Пожалуйста, используйте код ниже, чтобы решить вашу проблему. Вам просто нужно вызвать метод createNewFile (), он создаст файл в вашем проекте. Вы также можете указать местоположение, в котором вы хотите создать файл, иначе он создаст файл в месте вашего проекта, чтобы создать файл в указанном месте, вы должны указать местоположение вашей системы, как показано ниже

String fileLocation="fileLocation"+fileName;
File file = new File(fileLocation);


import java.util.Scanner;
import java.io.File;

public class TestFile {
public static void main(String[] args) throws IOException {
        Scanner input = new Scanner(System.in);
        System.out.print("Enter the desired name of your file: ");
        String fileName = input.nextLine();
        fileName = fileName + ".txt";

        File file = new File(fileName);
        file.createNewFile();
    }
}
0 голосов
/ 08 ноября 2018

У меня работал следующий код:

    Scanner input = new Scanner(System.in);
    System.out.print("Enter the desired name of your file: ");
    String fileName = input.nextLine();
    fileName = fileName + ".txt";

    File file = new File(fileName);
    boolean isFileCreated = file.createNewFile();  // New change
    System.out.print("Was the file created? -- ");
    System.out.println(isFileCreated);

Единственное изменение, внесенное в ваш код, - это вызов метода createNewFile. Это работало нормально во всех случаях. Надеюсь, это поможет.

Из API:

Атомно создает новый пустой файл, названный этим абстрактным путем если и только если файл с таким именем еще не существует. Чек для существование файла и создание файла, если это не так существуют единая операция, которая является атомарной по отношению ко всем другим действия файловой системы, которые могут повлиять на файл. Примечание: этот метод не должен использоваться для блокировки файлов, так как результирующий протокол не может заставить работать надежно. Следует использовать средство FileLock вместо этого.

0 голосов
/ 08 ноября 2018

Когда сталкиваешься с подобными проблемами, очень, очень важно пойти на JavaDocs , потому что 90% времени, это просто неправильное понимание того, как работают API.

File описывается как:

Абстрактное представление имен файлов и каталогов.

Это означает, что создание экземпляра File не создает файл, и файл не должен существовать, это просто описание виртуальной концепции файла.

Дальнейшее чтение документов привело бы вас к File#createNewFile, который описывается как:

Атомно создает новый пустой файл с таким абстрактным именем, если и только если файл с таким именем еще не существует. Проверка существования файла и создание файла, если он не существует, - это отдельная операция, которая является атомарной по отношению ко всем другим действиям файловой системы, которые могут повлиять на файл.

0 голосов
/ 08 ноября 2018

Когда вы инициализируете ваш File file = new File("TestFile.txt"), он еще не создан. Вы должны написать что-нибудь в свой файл, используя FileWriter или другие.

File f = new File(fileName);
FileWriter w = new FileWriter(f);
w.write("aaa");
w.flush();

или используйте f.createNewFile(), как предлагается в другом ответе. После этого вы сможете увидеть ваш файл и его содержимое.

0 голосов
/ 08 ноября 2018

Вы должны ошибаться, потому что простой вызов new File(String) не создаст файл. Это просто создаст экземпляр класса File.

Вам нужно позвонить file.createNewFile().

Добавление этого в конце создает файл: -

if (file.createNewFile()) {
    System.out.println("File created.");
} else {
    System.out.println("File already exists.");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...