2015-11-16 43 views
0

我不太了解这个问题背后的逻辑,因此我无法真正准确地搜索这样的东西是否已经存在。如何将文件读入Java对象

比方说,我为一个对象创建一个Java类。它只包含实例变量,getters/setters和构造函数来创建一个空对象。例如:

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; 
    } 
} 

现在假设我有一个像自行车的文本文件:

自行车1234,60

自行车333,50

自行车555,20

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

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

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

我不确定如何每辆自行车在文本文件中分配给自行车类的变量。我是否需要其他类(如数据库)?我对此很失落。

+0

你需要阅读[Java序列化对象](http://www.tutorialspoint.com/java/java_serialization.htm) – Salah

+0

一种方法可能是读取文件,遍历文件的每一行,解析每行的值,使用这些值创建对象的实例,并将该实例添加到实例集合中。 – David

回答

0

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

文件的JSON表示可以b:

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

,并与该信息来源,你可以获取Bicycles类的实例,其中属性模型和速度可以在“Normal”中获得“java对象。

看看thisthis教程...

0

你应该阅读更多的“类和对象”,以充分了解什么是一类的,什么是一个类的实例 - 对象。

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

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

您可以使用名为“createBycicles(File blueprints)”的方法创建一个名为BycicleFactory的类,该方法返回一个ArrayList。这里有一些关于设计模式的更多信息(最佳做法),称为工厂设计模式http://www.tutorialspoint.com/design_pattern/factory_pattern.htm

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

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); 
} 

自行车现在在自行车列表。