Создание массива объектов из чтения .txt файла и построчное сохранение в массиве объектов - PullRequest
0 голосов
/ 20 февраля 2019

Приглашение проекта выглядит следующим образом: В Netbeans создайте проект с именем Project1, обязательно создайте пакет, НЕ используйте пакет по умолчанию.Будет два java-файла, первый, скорее всего, с именем Project1.java (который содержит main) и второй с именем Record.java, который содержит переменную, содержащую ОДНУ ЛИНУ ДАННЫХ (или запись), считанную из файла.В вашем основном классе (не в Record.java) создайте массив объектов Record.Когда программа запускается, вызовите метод main (), который читает каждую строку текста из файла, создает объект Record, содержащий эту строку, и помещает объект в следующий доступный слот массива.

Текстовый файл, который я сохранил, таков:

John, Doe, jd@yahoo.com, 123456, green, 19.24
Mary, Jane, maryj@gmail.com, 7654321, blue, 27.54
Curly, Howard, nyuknyuk@msn.com, 888765, purple, 0.0
Bart, Simpson, donthaveacow@hotmail.com, 457673, magenta, 432.23
Clark, Kent, superdude@dailyplanet.com, 976834, red, 11.10

Моя проблема не в том, чтобы построчно прочитать текстовый файл и сохранить его в массиве Objects Record.Я могу легко создать массив строк, но это не очень помогает ситуации.Я не уверен, делаю ли я это более сложным, чем должно быть, или я совершенно неправ.Пока это мой код

project1:
import java.io.*;
import java.util.Scanner;
public class Project1 {
protected static int arrayLength=5 ;
protected static String filename ="data.txt";

   public static void main(String[] args)throws Exception{
     Record [] objects = new Record[arrayLength];
     ObjectInputStream in = new ObjectInputStream(new FileInputStream(filename));
     Record obj = (Record) in.readObject();
     System.out.print(obj.getRecord());
   }

   public static void arrayObjects()throws IOException, ClassNotFoundException{
     Record [] objects = new Record[arrayLength];
     ObjectInputStream in = new ObjectInputStream(new FileInputStream(filename));
     Record obj = (Record) in.readObject();



      }
       }
package Project1;

import java.io.*;
import java.util.Scanner;
import java.nio.file.*;; 



    /**
     *
     * @author lexif
     */
    public class Record{
     private String path;
     private String data;
     private int number =1;
    public Record(String file_path) throws IOException{
        path = file_path;

      }
    public String getRecord() throws FileNotFoundException, IOException{
        FileReader open = new FileReader(path); 
        BufferedReader reader = new BufferedReader(open);
        String data1 = reader.readLine();
        return data1;
    }

    public String OpenFile(String filename,int num) throws IOException {
        FileReader fr = new FileReader (filename);
        BufferedReader textreader = new BufferedReader(fr);
        for (int i=0; i < num; i++) {
        data = textreader.readLine();
        }
        textreader.close();
        return data;
        }

     public int readLines () throws IOException{
           FileReader file_to_read = new FileReader(path);
           BufferedReader br = new BufferedReader(file_to_read);

           String aline;
           int numLines=0;

           while((aline = br.readLine()) != null){
               numLines++;
           }
           br.close();
           return numLines;
       }
    }

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Пожалуйста, используйте этот код

   public Record[] readRecord(String pathFile) throws IOException {
        List<String> list = Files.readAllLines(Paths.get(pathFile));
        Record[] records = new Record[list.size()];
        for(int i = 0; i< list.size(); i++) {
            records[i] = new Record(list.get(i));
        }
        return records;
    }
0 голосов
/ 20 февраля 2019

Прежде всего, вы должны иметь функцию readLines () в классе Project.Затем все, что вам нужно сделать, - это изменить свою функцию readLines (), чтобы создать объект RecordObject и вернуть список объектов RecordObject.Примерно так:

public List<Record> readLines () throws IOException{
    FileReader file_to_read = new FileReader(path);
    BufferedReader br = new BufferedReader(file_to_read);

    String aline;
    int numLines=0;
    List<Record> recordList = new ArrayList<Record>();
    while((aline = br.readLine()) != null){

        Record rec = new Record(); // You can have a constructor which takes string as parameter also
        rec.setData(aline);
        recordList.add(rec);
        numLines++;
    }
    br.close();
    return recordList;
}

Вам не нужна функция OpenFile в вашем классе записей, и getRecord должен возвращать только член 'data'

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