从Java中读取文件

时间:2014-11-18 15:21:12

标签: java file text

我编写了一个使用Java从文本文件中读取的程序。该文件有1列,包含许多整数值,每个值都被添加到数组列表中。但是,当我打印数组列表时,在每个数字之间我得到一个空条目。例如,如果在文本文件中我有:

4 
55

我得到了:

1 : ÿþ4 (Also I do not know what this weird character is)
2 : 
3 : 555

代码:

import java.io.*;
import java.util.Scanner;
import java.util.ArrayList;

public class ReadFile {
public static void main(String[] args) {

    try 
    {
        Scanner input = new Scanner("ReadingFile.txt");
        File file = new File(input.nextLine());
        input = new Scanner(file);
        ArrayList numbers = new ArrayList();

        int i=1;

        while (input.hasNextLine()) {
            String line = input.nextLine();;
            numbers.add(line);
            System.out.println(i + " : " + line);
            i++;
        }
        input.close();

    } 
    catch (Exception ex) 
    {
        ex.printStackTrace();
    }
  }
}

我试图避免使用arraylist而只是这样做:

System.out.println(i + " " + line); 

然而这个问题仍然存在,所以我猜它不是一个ArrayList问题。

5 个答案:

答案 0 :(得分:0)

如果你的文本文件实际上是一个好的文本文件,它可能是一个字符编码的东西。您需要在其构造函数中为扫描仪提供正确的字符集。所以改变这一行:

input = new Scanner(file);

类似于:

String charset = "UTF-8";
input = new Scanner(file, charset);

当然,您需要弄清楚您的文件实际存储的字符集并使用该字符集。我这里仅以UTF-8为例。

答案 1 :(得分:0)

好的,问题是你实际上是从excel文件中读取二进制文件,因此是奇怪的字符。如果你想直接阅读excel文件,那么使用像JXL这样的库(http://jexcelapi.sourceforge.net/) - 这是一个使用该API的好教程:http://www.vogella.com/tutorials/JavaExcel/article.html

否则,您需要保存将Excel文件导出为CSV格式并使用您的代码读取该文件。

答案 2 :(得分:0)

奇怪的字符应该是writeUTF前缀或BOM。所以,取决于你如何写文件,阅读方法可以不同。

如果您使用DataOutputStream编写文件并调用writeUTF,那么您应该使用readUTF读取该文件

如果它是由文本程序编写的简单文本文件,如记事本++,我建议为每一行调用trim()函数。

答案 3 :(得分:0)

您的文件看起来像是UTF-16。这两个字符是UTF-16的字节顺序标记。

您必须在构建扫描仪时指定。

final Scanner scanner = new Scanner(file, "UTF-16");

答案 4 :(得分:0)

如果您没有Notepad++(文本编辑器)下载它。使用它打开生成的文本文件。

查找/替换并填充字段,并通过查看下图查看设置。然后按Replace All。然后保存您的文件。您的文本文件将是干净的。

enter image description here

相关问题