`
like_dark
  • 浏览: 36553 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java读、写、追加CSV

    博客分类:
  • J2EE
 
阅读更多

csv文件其实就是格式化的txt文件,所以操作和txt文件差不多,直接上代码了:

	<dependency>
			<groupId>commons-lang</groupId>
			<artifactId>commons-lang</artifactId>
			<version>2.5</version>
		</dependency>
		 
		<dependency>
			<groupId>org.ostermiller</groupId>
			<artifactId>utils</artifactId>
			<version>1.07.00</version>
		</dependency>

 

import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;

import org.apache.commons.lang.time.DateFormatUtils;

import com.Ostermiller.util.CSVPrint;
import com.Ostermiller.util.CSVPrinter;

/**
 * 
 * @author alex.wang
 * csv文件写入
 *
 */
public class CsvFilePrinter{   
  
    private CSVPrint csvPrint;

    /**
     * 
     * @param fileName 文件路径
     * @param append 是否支持追加
     * @throws IOException
     */
    public CsvFilePrinter(String fileName,boolean append) throws IOException { 
    	File file = new File(fileName);
    	if(!file.exists()){
    		csvPrint = new CSVPrinter(new FileWriter(fileName,append));
    		init();
    	}else{
    		csvPrint = new CSVPrinter(new FileWriter(fileName,append));
    		if(!append){
                init();
    		}
    	}
    	 
    }
    
    public void init() throws IOException{
    	write(new String[]{"id","mac","val","date"});
    }
   
    public void write(String[] values) throws IOException {  
    	csvPrint.writeln(values);
    }   
   
    public static void main(String[] args) throws Exception {   
    	String csvFile = "demo".concat("-").concat(DateFormatUtils.format(new Date(), "yyyyMMdd")).concat(".csv");
        CsvFilePrinter print = new CsvFilePrinter(csvFile,false);
        
        for(int i=0;i<10;i++){
        	print.write(new String[]{"50001"+i,"C914"+i,Integer.toString(-80+i),DateFormatUtils.format(new Date(), "yyyy-MM-dd")});
        }
    
    }   
  
}

 

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

import com.Ostermiller.util.ExcelCSVParser;
import com.Ostermiller.util.LabeledCSVParser;

/**
 * 
 * @author alex.wang
 * csv文件解析器
 *
 */
public class CsvFileParser{   
  
    private LabeledCSVParser csvParser;//csv解析器,对于第一行的表头信息,自动加载为索引关键字   
  
    private int currLineNum = -1;//文件所读到行数   
  
    private String[] currLine = null;//用来存放当前行的数据  
     
  
    /* 
     *  构造函数, 
     *  Param: in InputStream 要解析的信息流 
     *  throws IOException 
     */    
  
    public CsvFileParser(InputStream in) throws IOException {  
            csvParser = new LabeledCSVParser(new ExcelCSVParser(in));  
            currLineNum = csvParser.getLastLineNumber();  
    }
    
    public CsvFileParser(String fileName) throws IOException { 
    	InputStream in = new FileInputStream(fileName);
	    csvParser = new LabeledCSVParser(new ExcelCSVParser(in));  
        currLineNum = csvParser.getLastLineNumber(); 
    }
    
    /* 
     * 检查是否还有数据 
     * 
     * return ture 还有一行数据,false 没有数据 
     */  
    public boolean hasMore() throws IOException {  
        currLine = csvParser.getLine();  
        currLineNum = csvParser.getLastLineNumber();  
        if (null == currLine)  
            return false;  
        return true;  
    }   
  
    /* 
     * 返回当前行数据,关键字所指向的数据 
     * param:String filedName 该行的表头 
     * return:String 返回当前行数据,关键字所指向的数据 
     */  
    public String getByFieldName(String fieldName) {  
        return csvParser.getValueByLabel(fieldName);  
    }   
  
    /* 
     * 关闭解析器 
     * 
     *  
     */  
    public void close() throws IOException {  
        csvParser.close();   
    }   
  
    /* 
     * 读取当前行数据 
     * 
     *  return String[] 读取当前行数据 
     */  
    public String[] readLine() throws IOException {  
        currLine = csvParser.getLine();   
        currLineNum = csvParser.getLastLineNumber();   
        return currLine;  
    }   
  
   public int getCurrLineNum(){   
         return currLineNum;   
   }    
  
    public static void main(String[] args) throws Exception {   
  
         //创建解析信息流  
        InputStream in=new FileInputStream(new File("demo.csv"));   
  
       //实例解析器CsvFileParser   
        CsvFileParser parser=new CsvFileParser(in);   
  
       //读取数据  
        while(parser.hasMore()){  
             
            System.out.print(parser.getByFieldName("time")+" ");//time 系表头数据  
            System.out.print(parser.getByFieldName("total")+" ");  
             
        }  
         
        parser.close();  
          
  
    }   
  
}

 
 

分享到:
评论

相关推荐

    java操作CSV文件

    ### Java操作CSV文件知识点 #### 一、简介与背景 在日常的数据处理工作中,CSV(Comma-Separated Values)文件是一种常见的数据交换格式。它简单易用且跨平台兼容性好,常被用于导入导出数据、数据分析等场景。在...

    java对csv文件进行读写操作

    在Java中,处理CSV文件通常需要借助第三方库,如本示例中的`javacsv.jar`。`javacsv`是由Dave Taylor创建的一个小型库,专门用于读写CSV文件。下面我们将详细探讨如何使用Java和`javacsv`库对CSV文件进行读写操作。 ...

    Java往文件结尾追加数据

    Java往文件结尾追加数据(用Eclipse打开。)主要代码:RandomAccessFile vRandomAccessFile = new RandomAccessFile&#40;sFile,"rw"&#41;;vRandomAccessFile.writeBytes(sInput);

    Java操作csv文件

    要创建新的CSV文件或者向已有文件追加数据,可以使用`CSVPrinter`类。以下代码展示了如何写入CSV数据: ```java import org.apache.commons.csv.*; public class CSVWriter { public static void main(String...

    javacsv2.1实例

    Java CSV库,如javacsv 2.1,是处理CSV(逗号分隔值)文件的工具,这种格式在数据交换中非常常见,尤其在导入导出表格数据时。CSV因其简单、通用且易于处理的特性而广泛使用。下面我们将深入探讨javacsv 2.1库以及...

    javacsv2.1

    2. **写入CSV文件**:使用Writer接口,开发者可以轻松创建新的CSV文件或追加到已有文件中,支持动态插入字段和行。 3. **类型转换**:javacsv2.1自动处理类型转换,例如将字符串转换为日期、数字等,简化了数据处理...

    Java从.CSV文件中读取数据和写入

    在Java编程中,处理CSV(Comma Separated Values)文件是一项常见的任务,因为CSV格式是一种通用的数据交换格式,尤其适用于存储表格数据。本篇将详细解释如何从CSV文件中读取数据以及如何将数据写入CSV文件。 首先...

    Android如何读写CSV文件方法示例

    写入CSV文件则使用`FileOutputStream`来追加数据到文件末尾。以下是一个写入CSV文件的示例: ```java public void writeCSV(short[] data, String folder, String fileName) { File outputFile = new File(folder ...

    SuperCSV-1.52

    - **写入CSV**:使用`CsvWriter`类,你可以创建新的CSV文件或向现有文件追加数据,同样使用CellProcessor确保数据正确写入。 - **例子**:压缩包中可能包含示例代码,展示了如何使用SuperCSV进行基本的读写操作,这...

    java 文件读写功能

    以上就是关于Java文件读写功能的详细介绍,包括了以字节为单位读取文件、以字符为单位读取文件、以行为单位读取文件、随机读取文件内容以及向文件追加内容等几个方面。这些基本的操作对于日常开发中处理文件非常重要...

    java多线程导出excel(千万级别)优化

    4. 合并文件:所有线程完成任务后,将生成的CSV文件合并成一个大文件,这通常可以通过读取每个文件并将其内容追加到目标文件来实现。 5. 清理:关闭线程池,删除临时CSV文件。 在整个过程中,需要注意以下优化点: ...

    spark解析csv文件,存入数据库

    这里,使用了追加模式,意味着如果数据库中已存在名为“mytable”的表,那么数据将会被追加到该表中,而不是报错。如果需要替换原有的表,则可以使用SaveMode.Overwrite模式。 最后,我们需要注意的是,文档中的...

    java读写文件

    如果需要追加内容,记得设置`FileWriter`的构造函数为`true`。 在Web项目中,如`webproject5`这样的项目,文件读写可能涉及到动态生成或下载文件。例如,服务器端可能需要生成HTML、JSON或CSV文件并提供给客户端...

    Java IO 编程集合

    Java IO编程是Java平台中处理输入输出操作的重要组成部分,它提供了丰富的类库,使得开发者能够高效地进行数据的读取、写入、流的管理和转换。在这个集合中,我们主要探讨的是Java IO在文件读写方面的实践应用。 一...

    java对文本的各种处理

    - CSV:`java.csv`库(非标准Java库,需要额外引入)可以用来解析和生成CSV文件。 - XML:`javax.xml.parsers`包的`DocumentBuilderFactory`和`DocumentBuilder`处理XML文档。 - JSON:`org.json`或`...

    java 图书管理系统之添加图书(IO流版)

    2. **文件操作**:添加图书信息到文件时,需要创建或追加数据到已存在的文件。File类提供了创建、删除、重命名文件以及检查文件是否存在等方法。同时,我们还需要使用FileInputStream和FileOutputStream实例化IO流...

    基于Java SE 内容写的简单的学生成绩管理系统,用文件存储数据,swing写的界面.zip

    数据结构可能是文本文件,如CSV(逗号分隔值)格式,便于手动查看和编辑。这种方式适用于小型项目,但在大型或复杂的系统中,通常会选用更专业的数据库管理系统。 **Swing库** Swing是Java提供的一个用于构建GUI的...

    JAVA_StringBuffer

    2. **append()**:这是最常用的`StringBuffer`方法,用于将一个字符串、字符或对象追加到现有的字符串缓冲区。例如,`buffer.append("Hello").append(" ").append("World");`会将"Hello World"添加到`buffer`中。 3...

    读取和存储数据

    常用的语言如Python、Java、C++都有相应的API支持。 - 文本文件:在描述中提到的“文本文档里的数据”,通常指的是一种非二进制格式,如.txt或.csv,可以使用逐行读取或一次性读取所有内容的方法。 - 坐标数据:...

    阿里EasyExcel导出案例

    // 定义写处理器,继承AnalysisEventListener WriteHandler handler = new MyWriteHandler(); // 写入数据 EasyExcel.write(out, Student.class, handler).sheet("学生信息").doWrite(dataList); // 关闭...

Global site tag (gtag.js) - Google Analytics