如何读取文本文件的一部分以提取用于在 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;
}
}
您可以根据自己的大小更改数组的大小。不懂请回复
所以我有一个文本文件:
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;
}
}
您可以根据自己的大小更改数组的大小。不懂请回复