Java,从文件中获取特定字符串

Java,从文件中获取特定字符串,java,Java,我想从文本文件中获取特定字符串 例如,我只想将指定的第三行零件保存在新文件中 19:22:08.999 T:5804 NOTICE: Aero is enabled 19:22:08.999 T:5804 NOTICE: special://xbmc/ is mapped to: C:\Program Files (x86)\Kodi 19:22:08.999 T:5804 NOTICE: key://xbmcbin/ is mapped to: C:\Program Files (x86

我想从文本文件中获取特定字符串

例如,我只想将指定的第三行零件保存在新文件中

19:22:08.999 T:5804  NOTICE: Aero is enabled
19:22:08.999 T:5804  NOTICE: special://xbmc/ is mapped to: C:\Program Files (x86)\Kodi
19:22:08.999 T:5804  NOTICE: key://xbmcbin/ is mapped to: C:\Program Files (x86)\Kodi
     I want this part -----> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
19:22:08.999 T:5804  NOTICE: special://xbmcbinaddons/ is mapped to: C:\Program Files (x86)\Kodi/addons
我的代码:

public static void main(String[] args) throws IOException {
    ArrayList<String> result = new ArrayList<>();
    Scanner s = null; 
    try { 

        s = new Scanner(new BufferedReader(new FileReader("C:/test.txt"))); 

        while (s.hasNextLine()) {
            result.add(s.nextLine());
        }
    } finally {
        if (s != null){
            s.close();
        }
    } System.out.println(result);
} 
我所有的东西都保存在ArrayList中,但我现在怎么能

仅保存此ArrayList的一个元素 仅保存一行的一部分(粗体)到变量或新文件中。 编辑
我解决了所有问题非常感谢您的帮助,特别是@dustytrash

您检查每一行,看看它是否包含您需要的值。当您找到该值时,可以停止扫描,假设您只查找一行。然后,如果需要,您可以解析该行

以下是‘key://xbmcbin/ 根据您的示例,映射到:C:\Program Files x86\Kodi'

public static void main(String[] args) throws IOException 
{
    String result = "";
    Scanner s = null; 
    try 
    {
        final String searchKey = "key:";
        final String trimFromLine = "Kodi";
        s = new Scanner(new BufferedReader(new FileReader("test.txt"))); 

        while (s.hasNextLine() && result.isEmpty()) 
        {
            String nextLine = s.nextLine();
            if (nextLine.contains(searchKey))
            {
                // Trim everything from the end, to the beginning character of our searchKey (in this case 'key:')
                result = nextLine.substring(nextLine.indexOf(searchKey));

                // Take everything from the beginning to the end of the beginning character in our trimFromLine (in the case start index of 'Kodi')
                result = result.substring(0, result.indexOf(trimFromLine));
            }
        }
    } 
    finally 
    {
        if (s != null)
        {
            s.close();
        }
    } System.out.println(result);
} 

你如何确定你想要“保存”哪一行?我现在编辑它,让我们说关键字是一个键,它在一条直线的中间,但是它本身每次都可以改变它是一个日志文件,所以程序只保存了包含关键字KEY的一部分线。你是一个神DuthBaster,非常感谢你,但是如果我只想保存到key://xbmcbin/ 映射到:C:\Program Files x86\I不想将该行保存到最后,只想保存到Kodi之前的最后一个反斜杠?@xAllj只需再次使用拆分函数,取左侧。我会编辑我的答案我可以替换结尾编辑忘记我的问题谢谢你能解释一下这句话到底是怎么回事吗?结果=lineMustContain+nextLine.splitlineMustContain[1].splittrimFromLine[0];因为这是非常好的,程序正在工作,但我真的不明白你保存了2个字符串,其中包含关键字的整行,但在此之后,我不明白这一行,如果你能解释给我。这将是非常重要的nice@xAllj没问题,我已经更新了我的答案,让事情更清楚一点。但为了回答您的问题,split方法是获取一个字符串,将其转换为一个数组,并获取数组的前0或后1部分。