读取格式化文本文件+提取某些信息+将其加载到JList中

时间:2011-05-09 01:36:26

标签: java swing file jlist

所以我在这里得到了一个可以读取文本文件的代码:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.IOException;

public class ReadTextFile {
    public static void main(String[] args) {
        File file = new File("Test.txt");
        StringBuffer contents = new StringBuffer();
        BufferedReader reader = null;

        try {
            reader = new BufferedReader(new FileReader(file));
            String text = null;

            // repeat until all lines is read
            while ((text = reader.readLine()) != null) {
                contents.append(text).append(System.getProperty("line.separator"));
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (reader != null) {
                    reader.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        // show file contents here
        System.out.println(contents.toString());
    }
}

好的,现在我需要我的文本文件(Test.txt)具有以下结构(示例):

topic:- <climate>subtopic1, <atmosphere_type>subtopic2

subtopic1:- <temperatures>sentence1, <gases>sentence2, <winds>sentence3
subtopic2:- <gas_composition>sentence4, <gravitational_weight>sentence5

sentence1:- temperatures are around 34ºC but they can reach -42ºC in winter
sentence2:- there are significant proportions of nitrogen (13%) and butane (24%)
sentence3:- there are permanent winds with gusts of 118 km/h
sentence4:- methane (48%), nitrogen (13%), butane (24%) and oxygen (12%)
sentence5:- gravity in ecuador is 7.95 atmospheres

我真正需要的是拥有2 JList,在第一个JList我可以选择一个主题(如“气候”或“气氛类型”)然后在我的第二个{{1}我选择一个副主题(如果我选择“气候”,那么我可以选择“气温”,“气体”或“风”),所以当我点击JList时,程序会告诉我相应的句子。做那样的事情难吗?谢谢你的帮助! :)

1 个答案:

答案 0 :(得分:0)

尝试从文件构建以下数据结构。

// map of a topic (or subtopic) name to a list of subtopic (or sentence) names
Map<String, List<String>> subtopics = new HashMap<String, List<String>>();

// The above will contain the entries:
// topic -> [subtopic1, subtopic2]
// subtopic1 -> [sentence1, sentence2, sentence3]
// subtopic2 -> [sentence4, sentence5]

// map of topic/sentence name to heading
Map<String, String> headings = new HashMap<String, String>();

// This will contain:
// subtopic1 -> climate
// subtopic2 -> atmosphere type
// sentence1 -> temperatures
// sentence2 -> gases
// sentence3 -> winds
// sentence4 -> gas composition
// sentence5 -> gravitational weight

// dictionary for looking up a sentence name and retrieving its corresponding text
Map<String, String> dict = new HashMap<String, String>();

// sentence1 -> temperatures are around 34ºC but they can reach -42ºC in winter
// sentence2 -> there are significant proportions of nitrogen (13%) and butane (24%)
// sentence3 -> there are permanent winds with gusts of 118 km/h
// sentence4 -> methane (48%), nitrogen (13%), butane (24%) and oxygen (12%)
// sentence5 -> gravity in ecuador is 7.95 atmospheres

这应该让你朝着一个好的方向前进。需要注意的是,第一次将主题添加到“子主题”地图时,您必须记住首先创建List(例如ArrayList),将子主题名称添加到列表中,并将列表作为值添加对于主题名称。如果在列表中找到主题名称,只需将子主题名称添加到现有列表中。