如何将文件读入Java Object

时间:2015-11-16 14:24:26

标签: java object

我真的不明白这个问题背后的逻辑,因此,我无法准确地搜索这样的事情是否已经存在。

假设我为对象创建了一个Java类。它只包含实例变量,getter / setter和用于创建空对象的构造函数。例如:

public class Bicycle {
    private int speed;
    private String model;

    public Bicycle(int speed, String model) {
    this.speed = speed;
    this.model = model;
    }

    public int getSpeed() {
        return speed;
    }

    public void setSpeed() {
        this.speed = speed;
    }

    public String getModel() {
        return model;
    }

    public void setModel(String model) {
        this.model = model;
    }
}

现在让我说我有一个自行车的文本文件,如:

Bike 1234,60

Bike 333,50

Bike 555,20

我如何读取文件,然后将文本文件的每个部分分配给Bicycle.java中的变量?

我希望能够在其他方法中使用getter和setter。例如:

public static String searchBikes(int speed, String model) {
    if (Bicycle bike.getSpeed().equals(speed) && etc. etc.

我不确定如何将文本文件中的每个自行车分配给Bicycle类中的变量。我需要另一类(如数据库)吗?我对此非常失落。

3 个答案:

答案 0 :(得分:0)

现在最好的方法是java序列化,你可以为自行车定义一个人类可读的数据结构,并尝试将其转换为POJO(普通的旧java对象),其中一个选项是使用Json格式,它很容易阅读,有很多API用于转换字符串(子对象到POJO)GsonJackson等等

你文件的json表示可以是b:

{
  "speed": 33,
  "model": 50
}

使用此信息,您可以获取自行车类的实例,其中属性模型和速度可用于“普通”java对象。

查看thisthis教程......

答案 1 :(得分:0)

你应该阅读更多关于“类和对象”的内容,以完全理解什么是CLASS以及什么是类的实例 - 对象。

Oracle的网站可以是一个良好的开端https://docs.oracle.com/javase/tutorial/java/concepts/

关于你的具体问题,因为我们谈论对象面向编程,为什么不只是复制真实世界模型?自行车制造在哪里 - 在工厂里,使用某种规格,我们称之为蓝图。

您可以使用一个名为“createBycicles(File blueprints)”的方法创建一个名为BycicleFactory的类,该方法返回一个ArrayList。以下是有关名为Factory Design Pattern http://www.tutorialspoint.com/design_pattern/factory_pattern.htm

的设计模式(最佳实践)的更多信息

在工厂内部,您必须读取文件(蓝图)并在每行创建一个新的Bycicle对象。我建议你使用扫描仪,因为它是最简单的。 http://www.java2s.com/Code/JavaAPI/java.util/newScannerFileReaderfile.htm

答案 2 :(得分:0)

Scanner fileScan = new Scanner(new File("yourfile.txt"));
List<Bicycle> bikes = new ArrayList<>();
while(fileScan.hasNextLine()){
    String[] line = fileScan.nextLine().split(",");
    Bicycle bike = new Bicycle(line[1],line[0]);
    bikes.add(bike);
}

您文件中的自行车现在位于自行车列表中。