如何在 Java 中逐行读取文本文件并分隔每一行的内容?

Posted

技术标签:

【中文标题】如何在 Java 中逐行读取文本文件并分隔每一行的内容?【英文标题】:How do you read a text file, line by line, and separate contents of each line in Java? 【发布时间】:2015-10-14 01:21:23 【问题描述】:

我想知道如何读取文件并扫描每一行,但将每一行的内容分成一个 Char 变量和一个 Double 变量。

例子:

假设我们编写了一个打开文本文件“Sample.txt”的代码。要阅读第一行,您将使用以下代码:

 while(fin.hasNext())
         

            try

                inType2 = fin.next().charAt(0);

                inAmount2 = fin.nextDouble();
           

这段代码基本上说如果有下一行,它将把下一个char放入inType2,将下一个Double放入inAmount2。

如果我的txt文件是这样写的呢:

D    100.00
E    54.54
T    90.99

我将如何读取每一行,将“D”放入 Char 变量中,并将对应的 Double 或“100.00”(在本例中)放入其 Double 变量中。

感觉我写的代码读取了以下txt文件:

D
100.00
E
54.54
T
90.99

如果您能提供一种从文件中读取行并根据变量类型进行分隔的有效方法,我将不胜感激。 Sample.txt 总是首先有字符,然后是双精度。

-曼尼

【问题讨论】:

将一行读入String,然后在空白处拆分。 如何将txt文件作为csv,读到下一个\n,然后用逗号分割字符串并将数据解析为相应的类型 看看***.com/questions/33104575/input-mismatch-error/…。根据帖子拆分后,转换为 int 数组,根据您的用例解析元素。 对不起,伙计们,我试图避免所有这些方法。我不希望空格决定在哪里分割线,事实上,我不想分割线。我希望代码读取该行中的第一个 Char,然后在同一行中继续,直到它遇到 Double。然后将它们放入各自的变量中。我真的希望我说得通。感谢您的帮助! 【参考方案1】:

使用BufferedReader 读取行,然后在空白处拆分。

while((line=br.readLine())!=null)
    String[] arry = line.split("\\s+");
    inType2 = arry[0];
    inAmount2 = arry[1];

【讨论】:

【参考方案2】:

您可以通过whitespace

进行分隔
    Scanner scanner = new Scanner(new File("."));
    while (scanner.hasNext()) 

        //If both on different lines
        c = scanner.next().charAt(0);
        d = scanner.nextDouble();

        //if both on same line
        String s = scanner.next();
        String[] splits = s.split("\\s+");
        if (splits.length == 2) 
            c = splits[0].charAt(0);
            d = Double.parseDouble(splits[1]);
        
    
    scanner.close();

【讨论】:

以上是关于如何在 Java 中逐行读取文本文件并分隔每一行的内容?的主要内容,如果未能解决你的问题,请参考以下文章

在 Fortran 中逐行读取逗号分隔的文本文件

在 C 中逐行浏览文本文件

在 C# 中逐行读取文件

如何从 C++ 中的文本文件中逐行读取整数? [复制]

DELPHI中逐行读取并复制

在 Swift 中逐行读取文本文件?