Почему я не могу написать файл
public class Runable { Scanner scan = new Scanner(System.in); ArrayList<ExperienceCandidate> experienceList = new ArrayList<>(); // PRINT OUT MAIN MENU public void printMainMenu() { System.out.println("---Candidate Management System---"); System.out.println("1. Experience"); System.out.println("2. Display"); System.out.println("3. Write to file using thread"); System.out.println("4. Display all of the candidate by table format"); System.out.println("5. Exit"); } // GET MAIN MENU CHOICE public int getMainMenuChoice() { int choice = 0; do { try { System.out.print("Enter your choice: "); choice = Integer.parseInt(scan.nextLine()); // out of range check if (choice < 1 || choice > 5) { System.out.println("Out of range. Please choose 1 to 5 only"); System.out.println(); } } catch (NumberFormatException e) { // check if input is not number System.out.println(e.getMessage() + "is not a number. Please choose 1 to 5 only"); System.out.println(); } } while (choice < 1 || choice > 5); return choice; } public void methodStart() throws IOException { boolean end = false; Path data = Paths.get("H:\\Java Core\\Eclispse\\Assignment 5\\JPL.M.A101\\output.txt"); if (!Files.exists(data)) { Files.createFile(data); } else { System.out.println("File is existed"); } do { // MAIN MENU // print out main menu and get user choice int choice; printMainMenu(); choice = getMainMenuChoice(); // THE FUNCTIONS switch (choice) { case 1://Create information object create(); break; case 2://display object display(); break; case 3://write writeCandidatesIntoTextFile thread1 = new writeCandidatesIntoTextFile(); thread1.start(); break; case 4: break; case 5: end = true; break; } } while (end == false); } public void create() { String id; String firstName; String lastName; String birthDate; String address; String phone; String email; String proSkill; int expInYear; boolean addMoreExpe; do { System.out.println(); System.out.println("Create experience candidate"); id = Validate.getId(); firstName = Validate.getFirstName(); lastName = Validate.getLastName(); birthDate = Validate.getDate(); address = Validate.getAdress(); phone = Validate.getPhone(); email = Validate.getCandidateEmail(); expInYear = Validate.getExpYear(); proSkill = Validate.getProSkill(); experienceList.add(new ExperienceCandidate(id, firstName, lastName, birthDate, address, phone, email, expInYear, proSkill)); addMoreExpe = Validate.ynVal(); } while (addMoreExpe == true); } public void display() { for (int i = 0; i < experienceList.size(); i++) { System.out.println(experienceList.get(i).toString()); } } } class writeCandidatesIntoTextFile extends Thread { @Override public void run() { ArrayList<ExperienceCandidate> experienceList = new ArrayList<>(); Path data = Paths.get("H:/Java Core/Eclispse/Assignment 5/JPL.M.A101/output.txt"); OutputStream out = null; try { for (int i = 0; i < experienceList.size(); i++) { byte[] dataf = experienceList.get(i).toString().getBytes(); out = new BufferedOutputStream( Files.newOutputStream(data, StandardOpenOption.CREATE, StandardOpenOption.APPEND)); out.write(dataf, 0, dataf.length); } } catch (IOException e) { e.printStackTrace(); } finally { if (out != null) { try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
Что я уже пробовал:
Я не знаю, почему мое приложение не может писать в файл. Функции добавления и отображения в порядке.
Я создал файл, но приложение не записывало данные. Пожалуйста, помогите! Я думаю, что проблема заключается в классе writeCandidatesIntoTextFile extends Thread
0x01AA
Может быть, у вас есть подсказка для такого тупого, как я, где происходит проблема?
Member 14030709
В классе writeCandidatesIntoTextFile(). Я не знаю, в чем проблема. Он создает файл output.txt но не записывает данные