【问题标题】:Learn to code a CSV Reader program with Java学习使用 Java 编写 CSV 阅读器程序
【发布时间】:2023-04-03 00:38:01
【问题描述】:

我正在尝试编写一个 Java CSV 阅读器程序(使用我目前所学的知识,我是一个菜鸟)。但是,我现在不知道我的代码有什么问题。数据表很简单:

 my,name,is,Tan
 are,you,okay
 i,am,okay,—

输出基本上没有显示任何内容。但是当我删除了破折号时,它起作用了。 以下是我的代码:

    public static void main(String[] args) throws IOException{
    Scanner read = new Scanner(new File("List3.csv"));
    while(read.hasNext()){//if the txt file has next line then continue
        String line = read.nextLine();
        String[] lineArray = line.split(",");
        //
        for(int i = 0; i < lineArray.length; i++){
                System.out.print(lineArray[i] + " ");
            }
        }
    }

非常感谢。

【问题讨论】:

  • 等等。什么错误?
  • 有什么问题?
  • em-dash 可以在 CSV 中...它只是一个字符串。
  • 可能是字符集问题。但如果没有错误,就无法分辨
  • Em Dash 是一个 Unicode 字符 (\u{2014})。使用:Scanner reader = new Scanner(new FileInputStream("List3.csv"), "UTF-8"); 读取文件。

标签: java csv


【解决方案1】:

@Tan,下面对我来说非常适合。确保您的 csv 没有损坏并且位于正确的位置,并且还像我在下面所做的那样提及完整路径。

package com.java;

import java.io.File;
import java.io.IOException;
import java.util.Scanner;

public class Test {
 public static void main(String[] args) throws IOException {

    Scanner read = new Scanner(new File("C:\\Users\\abcdef\\Desktop\\list.csv"));

    while (read.hasNext()) {// if the txt file has next line then continue

        String line = read.nextLine();

        String[] lineArray = line.split(",");

        for (int i = 0; i < lineArray.length; i++) {
            System.out.print(lineArray[i] + " ");
        }
    }

    read.close();
 }
}

【讨论】:

  • 这不是问题。 OP did 声明如果 Em Dash 被删除,代码确实可以工作,因此定位文件不是问题。这是 Em Dash Unicode 字符在使用当前 Scanner 对象构造读取时导致问题。
  • 谢谢你,库马尔。我认为 DevilsHnd 是对的,因为他的代码修复了我的错误。
猜你喜欢
  • 2011-02-06
  • 1970-01-01
  • 2010-10-08
  • 2010-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-22
  • 1970-01-01
相关资源
最近更新 更多