Java 读取文件并检查行是否等于字符串

Java 读取文件并检查行是否等于字符串,java,file,minecraft,reader,Java,File,Minecraft,Reader,我的代码应该彻底解释我的问题。我需要读取整个文件,获取每行的数据,然后应用这些数据。我在读取整个文件和获取每行数据时遇到问题。它还将整个程序发送到一个无限循环中。我添加了一些发送到控制台的调试消息。这就是“Logger.log(“)”的含义。他们正在向控制台发送调试消息。以下是我的代码: 编辑:我通过将“while(fileList.length!=0)”更改为“if(fileList.length!=0)”修复了循环问题,但现在出现了操作无法继续通过调试消息“Logger.log(“14”)”

我的代码应该彻底解释我的问题。我需要读取整个文件,获取每行的数据,然后应用这些数据。我在读取整个文件和获取每行数据时遇到问题。它还将整个程序发送到一个无限循环中。我添加了一些发送到控制台的调试消息。这就是“Logger.log(“)”的含义。他们正在向控制台发送调试消息。以下是我的代码:

编辑:我通过将“while(fileList.length!=0)”更改为“if(fileList.length!=0)”修复了循环问题,但现在出现了操作无法继续通过调试消息“Logger.log(“14”)”的问题


使用
扫描仪时,需要的方法是
hasNextLine()
nextLine()
。方法
hasNextLine()当您读取所有行时,
将返回
false
。如果使用
BufferedReader
,则必须通过检查读取行的结果来检查输入是否已用尽。无论您使用何种文件读取方法,都必须确保关闭读卡器。这里我将为您提供更复杂的
BufferedReader
示例并使用
尝试使用资源
关闭()

File file = new File("test.txt");
try (BufferedReader br = new BufferedReader(new FileReader(file))) {
    String line;
    while ((line = br.readLine()) != null) {
        // ...
    }
} catch (IOException e) {
    e.printStackTrace();
}
为了完整起见,请使用
扫描仪

File file = new File("test.txt");
try (Scanner scanner = new Scanner(file)) {
    while (scanner.hasNextLine()) {
        String line = scanner.nextLine();
        // ...
    }
} catch (IOException e) {
    e.printStackTrace();
}
使用正则表达式分析每一行

哪个输出

Basic 385 0 50

使用
扫描仪时,需要的方法是
hasNextLine()
nextLine()
。方法
hasNextLine()当您读取所有行时,
将返回
false
。如果使用
BufferedReader
,则必须通过检查读取行的结果来检查输入是否已用尽。无论您使用何种文件读取方法,都必须确保关闭读卡器。这里我将为您提供更复杂的
BufferedReader
示例并使用
尝试使用资源
关闭()

File file = new File("test.txt");
try (BufferedReader br = new BufferedReader(new FileReader(file))) {
    String line;
    while ((line = br.readLine()) != null) {
        // ...
    }
} catch (IOException e) {
    e.printStackTrace();
}
为了完整起见,请使用
扫描仪

File file = new File("test.txt");
try (Scanner scanner = new Scanner(file)) {
    while (scanner.hasNextLine()) {
        String line = scanner.nextLine();
        // ...
    }
} catch (IOException e) {
    e.printStackTrace();
}
使用正则表达式分析每一行

哪个输出

Basic 385 0 50

根据您对另一个答案的评论(Elliot的,这是完全正确的),我将为您提供一些关于一种易于遵循/理解的方法的建议,以实现您的愿望

  • 使用Elliot答案中的任一实现
  • 创建一个方法,该方法接收
    字符串(文件中的一行),并将其转换为所需的任何内容
  • 在Elliot的代码中,将
    /…
    行替换为对您创建的方法的调用,并传入您刚刚从文件中读取的行

  • 这将使您的文件读取代码非常漂亮、干净,并且易于阅读。如果需要,您还可以通过再次调用该方法在其他地方重新使用该代码。如果您不知道如何解析文件并从中获取所需信息,我建议您在此问另一个问题。

    Bas根据你对另一个答案的评论(埃利奥特的,这是完全正确的),我将为你提供一些关于一种易于遵循/理解的方法的建议,来做你想做的事情

  • 使用Elliot答案中的任一实现
  • 创建一个方法,该方法接收
    字符串(文件中的一行),并将其转换为所需的任何内容
  • 在Elliot的代码中,将
    /…
    行替换为对您创建的方法的调用,并传入您刚刚从文件中读取的行


  • 这将使您的文件读取代码非常漂亮、干净,并且易于阅读。如果需要,您还可以通过再次调用该方法在其他地方重用该代码。如果您不知道如何解析文件并从中获取所需信息,我建议您在此问另一个问题。

    while(fileList.length!=0)
    应该是一个
    如果
    语句hmm,这能解决我的问题吗?它将1-使它更可读,2-降低陷入无限循环的风险好吧,改变它。你还能发现它有什么错误吗?我仍然不知道你为什么同时使用
    缓冲读取器
    扫描仪
    。我还想知道鼓励您在(fileList.length!=0)时使用来更好地管理您的资源
    应该是一个
    如果
    语句hmm,这能解决我的问题吗?它将1-使它更可读,2-降低陷入无限循环的风险好吧,改变它。你还能发现它有什么错误吗?我仍然不知道你为什么同时使用
    缓冲读取器
    扫描仪
    。我还想知道激怒您使用以更好地管理您的资源我不确定这是否回答了我的问题。我需要获取文件中的所有数据。该文件如下所示:插槽编号:0工具包名称:基本价格:50商品ID:385@CodaPlays将您的代码放在我的
    /…
    中处理每一行;这两个示例都将获得文件。我没有也不打算为您编写解析代码。但我建议您使用正则表达式
    模式
    。当我将代码粘贴到问题中时,我忘了删除测试时使用的代码。这就是扫描仪存在的原因。我已编辑了我的问题代码。您认为我现在的代码可以工作吗?请尝试代码。不要编辑您的问题以包含我的答案;特别是因为我的答案是“如何读取文件中的每一行”…好的,对不起。我是StackOverflow新手,请原谅我的无知。代码现在工作正常,但没有超过代码中的“Logger.log”(“14”)行。它就停在那里。你知道为什么吗?我不确定这是否回答了我的问题。我需要获取文件中的所有数据。该文件如下所示:插槽编号:0套件名称:基本价格:50商品ID:385@CodaPlays把你的代码放在我的每一行
    //…
    ;这两个例子都会让人失望