因此,我尝试使用string.format将文件读取器读取的csv数据(分隔)显示到控制台上,以保持显示的干净。这是样本数据
颜色、数字、字母
红色,1002,x
蓝色,1769年
贪婪,1769,z
而我使用的代码如下
try {
fr = new FileReader(filepath);
Scanner scan = new Scanner(fr);
scan.useDelimiter(",");
while(scan.hasNext()) {
String t = scan.next();
t = String.format("%10s", t);
System.out.print(t);
我所观察到的是,由于分隔符的存在,前一行的最后一个字符串和当前行的第一个字符串(在示例数据中为粗体和斜体)被合并为一个字符串。每一行都会发生这种情况,会弄乱显示。我正在努力找到一种只使用string.format方法的方法。这是我必须接受的限制吗?
2条答案
按热度按时间esyap4oy1#
我不认为
Scanner
是从csv文件读取数据的方式。取而代之的是,使用一种更先进的方法,即java.nio
.我想你的
filepath
是一个String
,则可以将每行分别读入List<String>
使用这行代码(您可能需要调整StandardCharsets
值):如果您只想用
System.out
,你可以这样做,它可以很好地用于小文件(将所有文件内容加载到ram中)
对于大文件,应该使用
Stream
(不会将所有内容加载到ram中)你不必使用
String.format(...)
完全u7up0aaq2#
您是否也尝试使用“\n”?可能是scan.usedelimiter(“,\n”);