Java Как сохранить контент из текстового файла в arraylist - PullRequest
0 голосов
/ 23 января 2020

Во-первых, у меня есть класс Mov ie, например,

public class Movie {
    private int duration;
    private String title;
    private int year;
    private ArrayList <Movie> movies;

    public Movie() {

    }

    public Movie(int duration,String title,int year) {  
        this.duration = duration;
        this.title = title;
        this.year = year;

    }


    public int getDuration() {
        return duration;
    }


    public void setDuration(int duration) {
        this.duration = duration;
    }


    public String getTitle() {
        return title;
    }


    public void setTitle(String title) {
        this.title = title;
    }


    public int getYear() {
        return year;
    }


    public void setYear(int year) {
        this.year = year;
    }



     public String toString() {
            return "Duration:" + this.duration + ",, "
                    + "Title:" + this.title + ",, " + "Year:"
                    + this.year;
     }
}

И у меня есть класс управления для выполнения некоторых операций. У меня есть несколько фильмов в текстовом файле, и я хочу сохранить их в формате ArrayList типа Movie. Итак, для этого я создаю метод, как вы можете видеть ниже.

public void textFileToArrayList() {
    movie = new ArrayList<Movie>();
    BufferedReader br = null;
    Movie e = null;
    try {
        br = new BufferedReader(new FileReader("movies.txt"));
    } catch (FileNotFoundException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    String line;
    try {
        while ((line = br.readLine()) != null) {
            String data[] = line.split("\t");
             e = new Movie();
             e.setDuration(Integer.parseInt(data[0]));
             e.setTitle(data[1]);
             e.setYear(Integer.parseInt(data[2]));

             movie.add(e);
        }
        for(Movie i : movie){
            System.out.println(i.getDuration()+","+i.getTitle()+","+i.getYear());
        }
        br.close();

    } catch (IOException io) {
        io.printStackTrace();
    }
}

Моя проблема в том, что при отладке я вижу, что синтаксический анализ в порядке, но по какой-то причине мой mov ie ArrayList всегда пусто Я не могу получить доступ к своему текстовому файлу при использовании ArrayList. Я могу разобрать его, но не могу сохранить и распечатать.

Мой полный код:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
import java.util.stream.Collectors;
import java.util.List;

import sait.mms.problemdomain.Movie;


public class MovieManagementSyste {

    ArrayList<Movie> movi = new ArrayList<Movie>();

public MovieManagementSyste() {
    textFileToArrayList();


    displayMenu();


}
public void textFileToArrayList() {
    movi = new ArrayList<Movie>();
    BufferedReader br = null;
    Movie e = null;
    try {
        br = new BufferedReader(new FileReader("movies.txt"));
    } catch (FileNotFoundException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    String line;
    try {
        while ((line = br.readLine()) != null) {
            String data[] = line.split(",");
             e = new Movie();
             e.setDuration(Integer.parseInt(data[0]));
             e.setTitle(data[1]);
             e.setYear(Integer.parseInt(data[2]));

             movi.add(e);
        }
        for(Movie i : movi){
            System.out.println(i.getDuration()+","+i.getTitle()+","+i.getYear());
        }
        br.close();

    } catch (IOException io) {
        io.printStackTrace();
    }
}

1 Ответ

0 голосов
/ 23 января 2020

Я только что запустил код, используя:

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class Movies {

    private List<Movie> movi;

    public static void main(String[] args) {
        Movies m = new Movies();
        m.textFileToArrayList();
    }

    public void textFileToArrayList() {
        movi = new ArrayList<Movie>();
        BufferedReader br = null;
        Movie e = null;
        try {
            br = new BufferedReader(new FileReader("movies.txt"));
        } catch (FileNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        String line;
        try {
            while ((line = br.readLine()) != null) {
                String data[] = line.split(",");
                 e = new Movie();
                 e.setDuration(Integer.parseInt(data[0]));
                 e.setTitle(data[1]);
                 e.setYear(Integer.parseInt(data[2]));

                 movi.add(e);
            }
            for(Movie i : movi){
                System.out.println(i.getDuration()+","+i.getTitle()+","+i.getYear());
            }
            br.close();

        } catch (IOException io) {
            io.printStackTrace();
        }}

    private static class Movie{
        private int duration;
        private String title;
        private int year;
        public int getDuration() {
            return duration;
        }
        public void setDuration(int duration) {
            this.duration = duration;
        }
        public String getTitle() {
            return title;
        }
        public void setTitle(String title) {
            this.title = title;
        }
        public int getYear() {
            return year;
        }
        public void setYear(int year) {
            this.year = year;
        }

    }
}

... У меня отлично работает. Список фильмов выводится на консоль.

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