读取具有特定格式的文本文件

时间:2017-04-23 14:51:53

标签: java function io text-files

我正在寻找有关如何阅读具有特定格式的文本文件的一些帮助,并将它们分配给我的程序中的变量。

TextFile.txt的

//Variables
start={x}
forward={c}
end={y}
pause={p}
path={x, c, c, c, c, p, c, c, y}

Class.java

public void readFile()
{

char start, forward, end, pause; 

BufferedReader reader = 
    new BufferedReader (
        new InputStreamReader (new FileInputStream (TextFile.txt)));

String line;
while ((line = reader.readLine ()) != null)
{
    if (line.startWith ("//") || line.trim ().isEmpty ())
        continue; // Ignore the line

    //**This is the part I need help with**
}
}

有人可以解释我如何将值分配给文本文件中的变量吗?

例如,start等于'x',forward等于'c'等等。

感谢。

2 个答案:

答案 0 :(得分:1)

在课堂上添加:

java.util.Properties p = new java.util.Properties();

在if语句之后的while循环中将其添加到代码中:

int index = line.indexOf("=");
String var = line.substring(0, index);
int s1 = line.indexOf("{");
int s2 = line.indexOf("}");
String value = line.substring(s1, s2);
p.setProperty(var, value);

在上面的代码中,var是您的变量,valuevar的值。

您可以进一步处理value以检查它是否包含,(逗号),如果它包含,则从中创建一个链接列表。

答案 1 :(得分:1)

您可以使用以下内容:

String line;
while ((line = reader.readLine()) != null) {
    if (line.startsWith("//") || line.trim().isEmpty())
        continue;
    else if(line.startsWith("start"))
        start= line.charAt(line.indexOf("{")+1);
    else if(line.startsWith("forward"))
        forward= line.charAt(line.indexOf("{")+1);
    else if(line.startsWith("end"))
        end= line.charAt(line.indexOf("{")+1);
    else if(line.startsWith("pause"))
        pause= line.charAt(line.indexOf("{")+1);
    else if(line.startsWith("path"))
        for(String s: line.substring(line.indexOf("{")+1, line.indexOf("}")).split(", "))
                path.add(s.charAt(0));

这假定您的路径定义为LinkedList<Character> path = new LinkedList<>();