- 浏览: 309656 次
- 性别:
- 来自: 杭州
-
文章分类
最新评论
-
wst0350:
点赞,有空深入讲解下原理
Servlet、Filter 和 Listener 调用顺序、生命周期的实验分析 -
tuspark:
Eclipse中高亮设置内容还有很多细节选项可以设置的,可以看 ...
Eclipse 设置匹配代码高亮 -
xichao1929:
这个时候,怎么启动发布的项目呢?????
JBoss设置为Windows服务 -
xiaozi7:
非常感谢,楼主的英语水平不一般那
WebSphere MQ Version 7 发布订阅相关配置 -
qtlkw:
slave没玩过
Hudson: java.lang.OutOfMemoryError: Java heap space error
[url]http://blog.csdn.net/hantiannan/article/details/6756347 [/url]
package com.han.csv.util; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.InputStreamReader; import java.util.ArrayList; public class CSVFileUtil { // CSV文件编码 public static final String ENCODE = "UTF-8"; private FileInputStream fis = null; private InputStreamReader isw = null; private BufferedReader br = null; public CSVFileUtil(String filename) throws Exception { fis = new FileInputStream(filename); isw = new InputStreamReader(fis, ENCODE); br = new BufferedReader(isw); } // ==========以下是公开方法============================= /** * 从CSV文件流中读取一个CSV行。 * * @throws Exception */ public String readLine() throws Exception { StringBuffer readLine = new StringBuffer(); boolean bReadNext = true; while (bReadNext) { // if (readLine.length() > 0) { readLine.append("\r\n"); } // 一行 String strReadLine = br.readLine(); // readLine is Null if (strReadLine == null) { return null; } readLine.append(strReadLine); // 如果双引号是奇数的时候继续读取。考虑有换行的是情况。 if (countChar(readLine.toString(), '"', 0) % 2 == 1) { bReadNext = true; } else { bReadNext = false; } } return readLine.toString(); } /** *把CSV文件的一行转换成字符串数组。指定数组长度,不够长度的部分设置为null。 */ public static String[] fromCSVLine(String source, int size) { ArrayList tmpArray = fromCSVLinetoArray(source); if (size < tmpArray.size()) { size = tmpArray.size(); } String[] rtnArray = new String[size]; tmpArray.toArray(rtnArray); return rtnArray; } /** * 把CSV文件的一行转换成字符串数组。不指定数组长度。 */ public static ArrayList fromCSVLinetoArray(String source) { if (source == null || source.length() == 0) { return new ArrayList(); } int currentPosition = 0; int maxPosition = source.length(); int nextComma = 0; ArrayList rtnArray = new ArrayList(); while (currentPosition < maxPosition) { nextComma = nextComma(source, currentPosition); rtnArray.add(nextToken(source, currentPosition, nextComma)); currentPosition = nextComma + 1; if (currentPosition == maxPosition) { rtnArray.add(""); } } return rtnArray; } /** * 把字符串类型的数组转换成一个CSV行。(输出CSV文件的时候用) */ public static String toCSVLine(String[] strArray) { if (strArray == null) { return ""; } StringBuffer cvsLine = new StringBuffer(); for (int idx = 0; idx < strArray.length; idx++) { String item = addQuote(strArray[idx]); cvsLine.append(item); if (strArray.length - 1 != idx) { cvsLine.append(','); } } return cvsLine.toString(); } /** * 字符串类型的List转换成一个CSV行。(输出CSV文件的时候用) */ public static String toCSVLine(ArrayList strArrList) { if (strArrList == null) { return ""; } String[] strArray = new String[strArrList.size()]; for (int idx = 0; idx < strArrList.size(); idx++) { strArray[idx] = (String) strArrList.get(idx); } return toCSVLine(strArray); } // ==========以下是内部使用的方法============================= /** *计算指定文字的个数。 * * @param str 文字列 * @param c 文字 * @param start 开始位置 * @return 个数 */ private int countChar(String str, char c, int start) { int i = 0; int index = str.indexOf(c, start); return index == -1 ? i : countChar(str, c, index + 1) + 1; } /** * 查询下一个逗号的位置。 * * @param source 文字列 * @param st 检索开始位置 * @return 下一个逗号的位置。 */ private static int nextComma(String source, int st) { int maxPosition = source.length(); boolean inquote = false; while (st < maxPosition) { char ch = source.charAt(st); if (!inquote && ch == ',') { break; } else if ('"' == ch) { inquote = !inquote; } st++; } return st; } /** * 取得下一个字符串 */ private static String nextToken(String source, int st, int nextComma) { StringBuffer strb = new StringBuffer(); int next = st; while (next < nextComma) { char ch = source.charAt(next++); if (ch == '"') { if ((st + 1 < next && next < nextComma) && (source.charAt(next) == '"')) { strb.append(ch); next++; } } else { strb.append(ch); } } return strb.toString(); } /** * 在字符串的外侧加双引号。如果该字符串的内部有双引号的话,把"转换成""。 * * @param item 字符串 * @return 处理过的字符串 */ private static String addQuote(String item) { if (item == null || item.length() == 0) { return "\"\""; } StringBuffer sb = new StringBuffer(); sb.append('"'); for (int idx = 0; idx < item.length(); idx++) { char ch = item.charAt(idx); if ('"' == ch) { sb.append("\"\""); } else { sb.append(ch); } } sb.append('"'); return sb.toString(); } }
发表评论
-
es使用两种方式
2018-06-28 16:26 0第一种方式: 使用TransportClient packag ... -
hbase
2018-06-25 13:50 0package cn.com.duiba.appordersy ... -
guava
2017-09-22 18:03 6511.Guava Cache的get/getIfPresent方 ... -
转:架构
2017-06-23 08:13 504架构是软件的核心和灵魂,没有好的架构的软件经过一段时间的迭代后 ... -
使用 redis 减少 秒杀库存 超卖思路
2017-06-22 23:58 563412月份重构公司社群活动产品,原来自己不是很成熟,按传统的形式 ... -
经典笔试题
2017-06-21 23:30 505public class BaseTest { pu ... -
Restful vs RPC
2017-01-23 10:54 874传统的RPC一般是基于二 ... -
自动产生随机数
2016-11-11 10:54 572/** * java生成随机数字和字母组合 ... -
commons-lang常用工具类StringEscapeUtils
2016-11-10 20:12 8981.escapeSql 提供sql转移功能,防止sql注入攻击 ... -
Java8:Lambda表达式增强版Comparator和排序
2016-10-27 10:32 2707http://www.importnew.com/15259. ... -
Java序列化几点注意事项
2016-10-26 17:02 902静态变量不属于对象,属于类,不能被序列化.还有瞬态的变量也不能 ... -
Rest vs dubbo
2016-09-15 18:10 0Rest 基于http, 大数据量和安全性可能不佳 dubbo ... -
List删除element两种方式的不同
2016-07-26 12:41 690public class DateUtilTest { ... -
Xmemcached——比spymemcached更快
2016-07-18 10:23 475Xmemcached是一个高性能的 ... -
velocity 缓存设置
2016-07-04 20:54 1084#velocity 是否开启缓存 velocity.resou ... -
Java8 Stream用法
2016-07-04 18:58 01. collect(toList()) 由stream里的值 ... -
熔断器设计模式
2016-05-22 23:14 606转载: http://www.cnblogs.com/ ... -
Date 参数
2016-04-22 21:44 582Oracle TO_CHAR parameters: The ... -
Dubbo安装部署
2016-04-18 01:16 1627Jdk-1.6.30以上版本 Tomcat-7 ... -
java read也需要加锁
2016-02-27 18:11 653今天被问到read需不需要加锁,结果没答上来。自己写了一个程序 ...
相关推荐
2. **Java读取CSV文件**: - 使用`BufferedReader`和`InputStreamReader`组合,可以指定字符编码读取文件。例如: ```java FileInputStream fis = new FileInputStream("path_to_file.csv"); InputStreamReader ...
Java读取excel,Excel是我们平时工作中比较常用的用于存储二维表数据的,JAVA也可以直接对Excel进行操作。
Java 读写 CSV 文件是指使用 Java 语言来读取和写入 CSV 文件,CSV 文件是一种常用的数据文件格式,逗号分隔的文本文件,默认可以用 Office 软件打开。CSV 文件可以包含各种特殊字符的处理信息,如对包含特殊字符的...
首先,我们需要了解如何使用Java的标准库`java.io`和`java.nio`来读取CSV文件。最常用的是使用`BufferedReader`配合`Scanner`或者`Files.lines()`方法。例如: ```java import java.io.BufferedReader; import java...
### Java读取Excel POI方法详解 #### 一、POI简介及背景 Apache POI 是一个用于处理 Microsoft Office 格式文件的开源库,它提供了读取、写入和修改这些文件的功能。POI 项目中最常用的部分是 HSSF 和 XSSF,分别...
首先,我们来讨论如何在Java中读取CSV文件。最常用的库是Apache Commons CSV和OpenCSV。这两个库都提供了方便的API来处理CSV数据。 1. Apache Commons CSV: - 引入依赖:在Maven项目中,可以在pom.xml文件中添加...
本文介绍了Java中常用的四种文本文件读取方法:按字节读取、按字符读取、按行读取以及随机读取。每种方法都有其适用场景和特点,开发者可以根据实际需求选择合适的方式来处理文本文件。此外,还特别注意了异常处理和...
在Java中,我们可以使用Apache Commons CSV库来读取CSV文件。该库提供了CSVRecord类,用于表示CSV文件的一行记录,以及CSVParser和CSVReader类,用于解析和读取CSV文件。首先,确保在项目中引入Apache Commons CSV库...
2. **读取CSV**:创建`CSVParser`实例,指定分隔符和编码,然后遍历`CSVRecord`对象。 ```java Reader reader = Files.newBufferedReader(Paths.get("path_to_your_file.csv")); CSVFormat csvFormat = CSVFormat...
- 文本文件:在描述中提到的“文本文档里的数据”,通常指的是一种非二进制格式,如.txt或.csv,可以使用逐行读取或一次性读取所有内容的方法。 - 坐标数据:可能是指地理信息系统(GIS)中的坐标,如经纬度,可以...
#### 二、Java读取CSV文件方法 在Java中读取CSV文件主要涉及以下几个步骤: 1. **创建文件路径**:通过`java.io.File`类或字符串形式指定文件路径。 2. **读取文件**:可以使用`java.io.BufferedReader`、`...
readAll() 方法读取整个 CSV 文件,返回一个 List[]> 对象,每个元素是一个字符串数组,表示一行数据。readNext() 方法读取下一行数据,返回一个字符串数组。 例如,下面是一个使用 Opencsv 读取 CSV 文件的示例...
一种常见的方式是使用Java标准库中的FileReader和BufferedReader类读取csv文件的每一行,然后使用字符串分割方法(如String.split())来分割每一行的数据,并将其存储到合适的数据结构中,比如HashMap。在这种情况下...
easypoi常用导入,导出,工具,引入easypoi包ExcelUtil工具类,可以直接导出查询的数据
3. **文件过滤**:为了只删除CSV文件,程序可能会使用`FilenameFilter`接口或Java 7引入的`Files`类的`walkFileTree`方法配合`FileVisitOption`,在遍历过程中只处理`.csv`后缀的文件。 4. **日期和时间处理**:...
- 读取CSV文件:使用`BufferedReader`类读取文件,根据逗号分割每一行的数据,将其解析为数组或列表。 - 处理复杂情况:对于包含逗号、换行符或双引号的字段,需要正确处理转义规则,确保数据的正确解析。 3. ...
以下是一些Java中读取文档时常用的jar包及其用途的详细说明: 1. **Apache POI** - 这个库主要用于处理Microsoft Office格式的文件,如Word(.doc, .docx)、Excel(.xls, .xlsx)和PowerPoint(.ppt, .pptx)。...
总之,Java读取Excel文件的方法多样,具体选择取决于项目需求和性能考虑。Apache POI是最常用的库,功能强大但可能会消耗较多内存;对于轻量级的需求,JExcelApi和OpenXLSX也是不错的选择。在实际开发中,要根据具体...
3. 使用BufferedReader读取CSV:首先,我们需要创建一个`FileReader`对象,然后通过它创建一个`BufferedReader`对象。使用`BufferedReader`的`readLine()`方法可以逐行读取文件内容。每行内容都是一个字符串,需要...