Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从文本文件中读取字符串直到某个字符,在控制台中打印它们,然后继续?_Java - Fatal编程技术网

Java 如何从文本文件中读取字符串直到某个字符,在控制台中打印它们,然后继续?

Java 如何从文本文件中读取字符串直到某个字符,在控制台中打印它们,然后继续?,java,Java,我有个问题。我有一个文本文件,其中包含一些名称和编号,如下所示: 奶酪;10;十二, 波拉特;99;五十五 我想从文件中读取字符和整数,直到“;”符号,println,然后继续,读取下一个,println,等等,如下所示: Cheese->println,10->println,99->println,然后转到下一行并继续 我尝试使用: BufferedReader flux_in = new BufferedReader ( new Input

我有个问题。我有一个文本文件,其中包含一些名称和编号,如下所示:

奶酪;10;十二,

波拉特;99;五十五

我想从文件中读取字符和整数,直到“;”符号,println,然后继续,读取下一个,println,等等,如下所示:

Cheese->println,10->println,99->println,然后转到下一行并继续

我尝试使用:

BufferedReader flux_in = new BufferedReader (
                         new InputStreamReader (
                         new FileInputStream ("D:\\test.txt")));

while ((line = flux_in.readLine())!=null && 
line.contains(terminator)==true)
{
    text = line;
    System.out.println(String.valueOf(text));   
}
但它读的是整行,并没有停在“;”符号上。将“contains”条件设置为false根本不会读取该行

编辑:部分解决,我成功地编写了以下代码:

    StringBuilder sb = new StringBuilder();
//  while ((line = flux_in.readLine())!=null)

        int c;
        String terminator_char = ";";
        while((c = flux_in.read()) != -1) {
        {
         char character = (char) c;
             if (String.valueOf(character).contains(terminator_char)==false)
              {
    //       System.out.println(String.valueOf(character) + " : Char");
                 sb.append(character); 
              }
              else 
              {
                  continue;
              }
            }
        }
        System.out.println(String.valueOf(sb) );
它返回一个新字符串,该字符串由读取字符串中的字符组成,但不带“;”。仍然需要一种方法使其在第一个“;”上停止,在字符串中打印并继续

  • 按1读取文件1中的字符
  • 删除“包含”条件
  • 使用stringBuilder()逐个构建字符串
  • 每个stringBuilder在面对“;”时停止(假设您使用if子句)

  • 我没有测试,因为我在打电话。希望这对您有所帮助

    感谢Stefan Vasilica提供的IDEA:

    Scanner scan = new Scanner(new File("D:\\testfile.txt"));
        // Printing the delimiter used
        scan.useDelimiter(";");
        System.out.println("Delimiter:" + scan.delimiter());
        // Printing the tokenized Strings
        while (scan.hasNext()) {
            System.out.println(scan.next());
        }
        // closing the scanner stream
        scan.close();
    

    谢谢,我也在想同样的事情,一个字符一个字符地读字符串,停在“;”,构建一个新字符串,然后打印它,继续等等。我不知道stringbuilder类,应该会有帮助。如果你解决了问题,请告诉我,然后将问题标记为已解决。部分解决。我设法在第一篇文章中编写了代码(无法在评论中正确格式化代码,因此我编辑了第一篇文章)。我返回一行由文本组成的字符串,但不带“;”符号。使用Scanner=new Scanner(“D:\\test.txt”)代替BufferedReader;并使用scanner.next()读取下一个字符。scanner.nextLine()一直读取到lineYup的末尾,这应该根据以下文档解决它:。看来这正是我需要的。我会在5分钟内报告,非常感谢所有的快速回复。