#java
Вопрос:
Я создаю программу, которая будет создавать файлы и удалять файлы и т.д., Но программа может создать только один файл, и после этого она завершается, поэтому я хочу использовать строку в качестве имени объекта класса create_file, чтобы я мог увеличивать числа(строка, используемая в качестве имени объекта), Поэтому мой вопрос в том, как я могу использовать строку в качестве имени объекта конструктора класса? ниже приведен исходный код программы-
import java.io.IOException; import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class Create_File { public static void main(String[] args) throws IOException { try { Selecter.select(); } catch(Exception e) { e.printStackTrace(); } } static void create() throws IOException { String name; System.out.println("Enter a name for your file"); try(BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));){ name = reader.readLine(); //this block is used as try with resource statement used to overcome scanner resource leak } try{ //file is created with the name that user gives File obj = new File("D:\txtfiles\" name ".txt"); if(obj.createNewFile()) { System.out.println("file successfully created with the name " obj.getName()); } else{ System.out.println("The file already exists"); } } catch(IOException e){ //here exception during file creation is caught System.out.println("An error occurred."); e.printStackTrace(); } // info(name); name = null; // Selecter.select(); } static void info(String name) throws IOException { File obj = new File("D:\txtfiles\" name ".txt"); String data = null; Scanner scan = new Scanner(obj); if(obj.exists()) { //file properties are printed out for both newly created file and the existing file System.out.println("File properties"); System.out.println("Name of the file = " obj.getName()); System.out.println("Path of file = " obj.getAbsolutePath()); System.out.println("Size of file in Kb= " obj.length()/1024); // obj.lengeth is divided by 1024 to get the file size in Kb System.out.println("Readable = " obj.canRead()); System.out.println("Writable = " obj.canWrite()); } else {System.out.println("the file does not exist"); //this block is used as try with resource statement used to overcome scanner resource leak while(scan.hasNextLine()) { data = scan.nextLine(); System.out.println(data); } } // Selecter.select(); } static void delete(String name) throws IOException { try{ File obj = new File("D:\txtfiles\" name ".txt"); obj.delete(); if(obj.exists()==false) { System.out.println("file deleted successfully"); } else { System.out.println("file does not exist"); } } catch(Exception e) { e.printStackTrace(); } } }
ниже приведен исходный код класса селектора-
import java.io.IOException; import java.io.InputStreamReader; import java.io.BufferedReader; public class Selecter { static void select() throws IOException { String num=null; Create_File create =new Create_File(); System.out.println("Select Action"); System.out.println("1. Create new text file"); System.out.println("2. Delete an existing file"); System.out.println("3. Find info of a file"); System.out.println("4. Print the contents of a file"); System.out.println("5. EXIT"); System.out.println("Your choice = "); try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));){ int choice = Integer.parseInt(num= reader.readLine()); if(choice==1) { create.create(); } else if(choice == 2){ System.out.println("enter file name to delete"); String name=reader.readLine(); create.delete(name); } else if(choice == 3) { System.out.println("enter file name to find its info"); String name= reader.readLine(); create.info(name); } else if(choice ==4) { Buffer contents = new Buffer(); Buffer.main(null); } else if(choice == 5) { System.exit(0); } } // select(); } }
или есть альтернативное решение этой проблемы, я хочу, чтобы программа продолжала работать до тех пор, пока пользователь не захочет выйти.
Комментарии:
1. «Я хочу, чтобы программа продолжала работать до тех пор, пока пользователь не захочет выйти» — Значит, вы просто ищете цикл? Вы можете обернуть свою программную логику верхнего уровня в цикл, который будет постоянно проверять вводимые пользователем данные и выполнять запрошенную задачу. Или ты спрашиваешь о чем-то другом? Мне не совсем ясно, что конкретно работает не так, как ожидалось.
2. эй, Дэвид, это в цикле, все остальные параметры работают, за исключением того, когда мы выбираем вариант 1 (создать) во второй раз, когда он выдает ошибки, но для другого варианта он работает просто отлично.
3. И в чем же заключается ошибка? Какая операция вызывает эту ошибку? Пожалуйста, конкретизируйте проблему.