-
怎么用JAVA的api去读取一个文本文件,换行符必须采用CRLF("\r\n")3
我现在要用java读取一个CSV文件,其中明确给出了CSV文件要以CRLF(即"\r\n")为换行符号,也就是说如果单出现CR或者LF不作为换行符号处理。
利用BufferedReader这个类的readLine方法默认把'\r','\n'或'\r\n'都当作换行符号。
与我要实现的读取数据不符。请问有没有比较好的方法? 难道非要重写一个Reader不成?
希望有兴趣或者知情者出来给个点子至少讨论一下。2010年1月20日 12:13
4个答案 按时间排序 按投票排序
-
首先在http://ostermiller.org/utils/download.html 上下载com.Ostermiller.util cvs的jar包.
有了这个jar包就可以写个工具类,专门控制csv文件的读取操作.
public class CsvFileParser{ private LabeledCSVParser csvParser;//csvParser private int currLineNum = -1;//The current line number for reading. private String[] currLine = null;//The data of current line. /* * Param: in InputStream * throws IOException */ public CsvFileParser(InputStream in) throws IOException { csvParser = new LabeledCSVParser(new ExcelCSVParser(in)); currLineNum = csvParser.getLastLineNumber(); } /* * Get the titles of csv file. * * return String[] */ public String[] getTitles() throws IOException { return csvParser.getLabels(); } /* * Checkout whether it has more data. * * @return ture: has data,false nodata. */ public boolean hasMore() throws IOException { currLine = csvParser.getLine(); currLineNum = csvParser.getLastLineNumber(); if (null == currLine) return false; return true; } /* * Get the data of filed by field name. * param:String filedName * * @return:String */ public String getByFieldName(String fieldName) { return csvParser.getValueByLabel(fieldName); } /* * Close the parser. * * */ public void close() throws IOException { csvParser.close(); } /* * Read the current line.Return the data of current line. * * @return String[] */ public String[] readLine() throws IOException { currLine = csvParser.getLine(); currLineNum = csvParser.getLastLineNumber(); return currLine; } /* * Get current line number. * * @return int */ public int getCurrLineNum(){ return currLineNum; } /* * Get the data of the current line. * * @return String[] */ public String[] getCurrLine() { return currLine; } }
2010年1月20日 14:16
-
不清楚为什么必须规定“"\r\n"”为换行标记,如果必须按照此约定编码的话,个人建议使用分段读取CSV文件(分段大小可自定义,几百K即可),然后循环判断“"\r\n"”。如果有知道JavaAPI中可以直接设置请斧正,谢谢。
2010年1月20日 12:13
相关推荐
换行符批量转换工具:LF to CRLF / CRLF to LF ,自动寻找子目录,自定义替换类型:.txt.c.h(格式:.类型 .*为全部)。
在IT领域,文本文件的换行符是操作系统之间的一个重要差异。不同的系统使用不同的字符序列来表示一行的结束。在Windows系统中,行尾通常由一个回车字符(CR,Carriage Return)和一个换行字符(LF,Line Feed)组成...
改变文本文件的回车换行符,命令行下使用。Windows XP以上版本操作系统。
此外,文本编辑器可能还涉及到文本格式的处理,比如换行符的处理,因为不同操作系统有不同的换行符标准(Windows使用CRLF,Linux和macOS使用LF)。为了确保兼容性,开发者需要对读取和写入的文本进行适当的转换。 ...
首先,我们要理解在JavaScript中,换行符主要有两种形式:LF(Linux和Unix系统中,'\n')和CRLF(Windows系统中,'\r\n')。有时,拷贝的数据可能同时包含这两种换行符。因此,我们需要编写一个函数来处理这些换行符...
Unix/Linux使用的是LF,Mac后期也采用了LF,但Windows一直使用CRLF【回车(CR, ASCII 13, \r) 换行(LF, ASCII 10, \n)】作为换行符。而git入库的代码采用的是LF格式,它考虑到了跨平台协作的场景,提供了“换行符自动...
Unix和Windows系统在处理文本文件时有不同的行结束符:Unix使用换行符(LF),而DOS/Windows系统则使用回车+换行符(CR+LF)作为一行的结束。因此,当一个Unix格式的文本文件在Windows环境下打开时,可能会显示为每...
文件的内容通常以行的形式呈现,每一行由若干个字符加上行结束符(如LF或CRLF)组成。在不同的操作系统中,行结束符可能有所不同:Linux/Unix系统使用LF(换行),而Windows系统使用CRLF(回车换行)。 二、为什么...
在Java项目开发中,我们经常会遇到跨平台协作的情况,这时文件的换行符一致性就显得尤为重要。LF(Line Feed)是Unix和Linux系统中的换行符,而CR+LF(Carriage Return + Line Feed)是Windows系统所使用的。在不同...
描述中提到"converts unix test to windows with cr+lf lines",这表明这个压缩包可能包含一个程序或脚本,它的功能是将使用LF行结束符的UNIX/Linux文本文件转换为使用CRLF行结束符的Windows兼容格式。"full open ...
这两种系统对文本文件的行结束符处理方式不同,Windows使用CRLF(回车换行)作为行结束符,而UNIX/Linux则只使用LF(换行)作为行结束符。这在跨平台操作时可能会引发问题,如代码编辑器显示异常或脚本执行错误。...
在Windows系统中,文本文件的换行通常使用CRLF(Carriage Return, Line Feed,即回车加换行)组合,而在Unix和Linux系统中,只使用LF(Line Feed,换行)作为换行符。这两种不同类型的换行符在跨平台交互时可能导致...
例如,当在Windows环境下打开一个纯UNIX格式的文本文件时,由于文件中只有换行符(LF),没有回车符(CR),因此Windows系统默认的记事本程序无法识别正确的换行位置,导致所有文本内容被显示在一行内,造成阅读困难...
"取任意行文本"是易语言编程中常见的一个需求,尤其是在处理大量数据或者读写文件时。这个功能可以帮助开发者从文本文件中获取特定行的内容,对数据分析、日志分析等场景非常实用。 首先,我们要理解"取任意行文本...
文本文件读写的一个关键特点是行结束符,如CRLF(回车换行)在Windows系统中,LF(换行)在Unix/Linux系统中。在跨平台操作时,需要特别注意这些差异。而二进制文件则没有固定的行结束符概念,它直接保存原始数据的...
而且,转过一次的文本,再转一次,也会乱码。 我在对比了诸多字符集探测库之后,选定了Notepad3使用的魔改版uchardet,这个魔改版uchardet经过Notepad3作者精心调教,精度比原版uchardet更高! 虽然不能说做到百分...
- **文本文件**:文本文件使用ASCII编码,其中每个字符用7位来表示,最高位为0。在文本编辑器中,如记事本,以字符为单位进行编辑。在不同操作系统中,新行可能以不同方式表示(如UNIX的LF,Mac的CR,Windows的CRLF...
在了解Windows系统中的回车换行符(\r\n)与类Unix系统中的换行符(\n)的区别之前,我们首先需要明白什么是回车(Carriage Return, CR)以及什么是换行(Line Feed, LF)。回车的意思是将光标移回到当前行的开头,而...
本示例中,我们关注的是如何使用Delphi来读取目录结构并将其保存为TXT文本文件。这个任务在文件管理和系统管理领域非常常见,可以帮助用户方便地记录和备份文件系统的组织方式。 首先,我们需要了解在Delphi中访问...
Linux系统使用的是LF(Line Feed,换行符)作为行结束标识,而Windows和DOS系统则采用CRLF(Carriage Return + Line Feed,回车加换行符)作为行结束标志。这就导致了在不同系统间交换文本文件时可能会出现格式问题...