gpt4 book ai didi

java - 非标准字符: Strange Interactions With CSV Files [Java]

转载 作者:太空宇宙 更新时间:2023-11-04 11:24:52 25 4
gpt4 key购买 nike

我正在编写一个简单的函数,用于从 csv 文件中删除所有空白行:

import java.io.*;
import java.util.*;
import java.io.File;
import java.util.Scanner;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.io.FileWriter;
import java.io.PrintWriter;


public class WhiteSpace{

static List<String> AggAndGroupIndices = new LinkedList<String>();

public static void main(String[] args){

System.out.println("Pre-whitespace");
removeWhiteSpace("myFile");
System.out.println("Post-whitespace");
}

//////////////////////////////////////////////////////////////////////////////

public static void removeWhiteSpace(String csv_filename){
System.out.println("Whitespace removal activated");
Scanner file;
PrintWriter writer;

try {

file = new Scanner(new File(csv_filename));
writer = new PrintWriter("WhiteSpaceRemoval.csv");
System.out.println(file.hasNext());
System.out.println("About to enter while loop");
while (file.hasNext()) {
System.out.println("In while loop");
String line = file.nextLine();
if (!line.isEmpty()) {
writer.write(line);
writer.write("\n");
}
}
System.out.println("While loop complete");

file.close();
writer.close();

} catch (FileNotFoundException e) {
e.printStackTrace();
}

}


}

这应该相对简单,但是,只要使用非标准字符(例如 é 或 Ç),它就会中断。即以下 csv 文件:

province,name,month

Quebec,Franois,February

工作完美,但是

province,name,month

Quebec,François,February

根本不会打印到 WhiteSpaceRemoval.csv 中。此外,根据我的检查,根本没有输入 while 循环,甚至没有在第一个有效行上输入。这让我感到困惑,我真的不知道可能出了什么问题。有谁知道这可能是什么?在 Linux 上运行。

最佳答案

如果你想过滤掉空行,你可以:

public List<String> filterNonEmptyLinesOnFile(String fileName) {
List<String> list = new ArrayList<>();

try (Stream<String> stream = Files.lines(Paths.get(fileName))) {
list = stream.filter(line -> !line.isEmpty())
.collect(Collectors.toList());

} catch (IOException e) { e.printStackTrace();
} finally { return list; }
}

关于java - 非标准字符: Strange Interactions With CSV Files [Java],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44491093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com