如何存储文本文件串以供以后在Java中使用

时间:2015-06-05 16:13:11

标签: java bufferedreader jfilechooser

请原谅我,我对Java相对较新。

基本上我想通过文件追踪器选择文件后,为文本文件获取一些字符串供以后使用。

这是我到目前为止编写的代码片段。

public void actionPerformed(ActionEvent e){
    if(e.getSource() == openButton){
        returnVal = fileChooser.showOpenDialog(null);
        if(returnVal == JFileChooser.APPROVE_OPTION){
            file = fileChooser.getSelectedFile();

            //read file
            try{
                br = new BufferedReader(new FileReader(file));
                while((currentLine = br.readLine()) != null){
                    if(currentLine.startsWith(organismId)){
                   // if(Character.isDigit(currentLine.charAt(7))){
                    System.out.println(currentLine);
                }}
            } catch (Exception error){
                error.printStackTrace();
            }
        }
    }
}

基本上我有一个变量(organismId),它由用户通过GUI输入确定。从这里我可以打印出以所选String变量开头的行。然而,这并不是我想要实现的目标。我希望能够收集下一行中出现的文字,直到一个角色">"到达了。

然后我希望能够获得每个不同的organismId的文本的平均字符长度(即> ggo和> hba)。

即。文本文件的外观示例如下:

> GGO

这是一个例句

> GGO

这是另一个例句

> GGO

这是一个非常长的例句,可以进入多行,如此处所示

> HBA

这是一个有不同生物的句子

我希望所有这些都是有道理的,任何帮助都会受到高度赞赏。

非常感谢! :)

1 个答案:

答案 0 :(得分:2)

此代码段应该是您问题的解决方案。 printLines用于在找到您的生物后开始打印行。 while循环继续循环,如果找不到另一个生物,则打印该行。但是当达到一个新的有机体时(我相信>表示),然后printLines被设置回false

ArrayList<String> organisms = new ArrayList<String>();
boolean printLines = false;
StringBuilder organism = new StringBuilder();
while((currentLine = br.readLine()) != null) {
    if (printLines) {
        if (currentLine.startsWith(">")) {
            // We have reached the next organism, so stop printing
            printLines = false;
            // Add the current organism to our collection
            organisms.add(organism.toString());
            // Clear the StringBuilder, ready for the next organism
            organism.setLength(0)
        }
        else
        {
            // We are still printing the current organism
            organism.append(currentLine);
        }
    }

    if(currentLine.startsWith(organismId)) {
        // Print this line, and start printing all lines after this
        organism.append(currentLine);
        printLines = true;
    }
}

如果您有任何疑问或意见,请在下面告诉我们。

编辑根据评论中的要求,我们进行了修改,以便将值添加到ArrayList