Java 如何存储文本文件字符串供以后使用

How to store strings of text files for later use in Java

请原谅我,我对 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

这是一个不同organismId的句子

我希望所有这些都有意义,我们将不胜感激。

非常感谢! :)

这段代码应该可以解决您的问题。 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