如何读取文本文件的一部分以提取用于在 Java 中创建对象的信息

How to read a portion of a text file to extract information to be used to create an object in Java

所以我有一个文本文件:

Name: Hulabaloo
Loading bay: 7
Container handling time: 50ms
Storage capacity: 70

并且我想提取此信息以在我的 class 中为与文本文件中的变量类似的变量创建一个对象。在阅读文件之前我已经弄明白了,这是我的代码:

public class ThisClass
{
    private static final URL path = ThisClass.class.getResource("TextFile.info");
    private static final String TEXTFILE = path.getFile();

    private String name;
    private int loadingBays;
    private int containerHandlingTime;
    private int storageCapacity;

    public ThisClass(String name, int loadingBays, int containerHandlingTime, 
int storageCapacity)
    {
        this.name = name;
        this.loadingBays = loadingBays;
        this.containerHandlingTime = containerHandlingTime;
        this.storageCapacity = storageCapacity;
    }


    public static void main(String[] args) throws FileNotFoundException, IOException
    {
        BufferedReader br = null;
        FileReader fr = null;

        String sCurrentLine;

        br = new BufferedReader(new FileReader(TEXTFILE));

        while((sCurrentLine = br.readLine()) != null)
        {
            System.out.println(sCurrentLine);
        }           
    }
}

很明显,所有这一切都只是打印出文本文件。我想要做的是从 Harbor class 创建一个对象,并将文本文件中的值传递给构造函数。我认为尝试在文本文件中查找“:”并从该点提取到行尾是个好主意,但我不知道该怎么做。在此先感谢您对此事的任何帮助!

public class ThisClass {
private static final URL path =      ThisClass.class.getResource("TextFile.info");
private static final String TEXTFILE = path.getFile();

private String name;
private int loadingBays;
private int containerHandlingTime;
private int storageCapacity;

public ThisClass(String name, int loadingBays, int containerHandlingTime,
                 int storageCapacity) {
    this.name = name;
    this.loadingBays = loadingBays;
    this.containerHandlingTime = containerHandlingTime;
    this.storageCapacity = storageCapacity;


}

public static void main(String[] args) throws FileNotFoundException, IOException {
    BufferedReader br = null;
    FileReader fr = null;

    String sCurrentLine;

    br = new BufferedReader(new FileReader(TEXTFILE));

    String name = "";
    int loading = 0;
    int time = 0;
    int capacity = 0;

    int count = 1;

    int elemCount = 0;

    ThisClass[] classArray = new ThisClass[2];

    while ((sCurrentLine = br.readLine()) != null) {

        System.out.println("sCurrentLine = " + sCurrentLine);
        if (sCurrentLine.toLowerCase().startsWith("name")) {
            name = sCurrentLine.split(":")[1].trim();
        } else if (sCurrentLine.toLowerCase().startsWith("loading")) {
            loading = Integer.parseInt(sCurrentLine.split(":")[1].trim());
        } else if (sCurrentLine.toLowerCase().startsWith("container")) {
            time = Integer.parseInt(sCurrentLine.split(":")[1].trim().replace("ms", ""));
        } else if (sCurrentLine.toLowerCase().startsWith("storage")) {
            capacity = Integer.parseInt(sCurrentLine.split(":")[1].trim());
        }
        if (count % 4 == 0) {
            classArray[elemCount] = new ThisClass(name, loading, time, capacity);
            elemCount += 1;

            System.out.println("name = " + name);
            System.out.println("loading = " + loading);
            System.out.println("time = " + time);
            System.out.println("capacity = " + capacity);
        }


        if (!sCurrentLine.trim().equalsIgnoreCase(""))
            count += 1;
    }

    for (ThisClass cl : classArray) {
        System.out.println("cl = " + cl);
    }
}

@Override
public String toString() {
    return "name: " + this.name
            + "loadingBays: " + this.loadingBays
            + "handlingTime: " + this.containerHandlingTime
            + "capacity: " + this.storageCapacity;
}

}

您可以根据自己的大小更改数组的大小。不懂请回复