`
Sarah-Brightman
  • 浏览: 75323 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

csv文件是什么

阅读更多
CSV文件介绍

简介
CSV全称 Comma Separated values,是一种用来存储数据的纯文本
文件格式,通常用于电子表格或数据库软件。

规则

0 开头是不留空,以行为单位。
1 可含或不含列名,含列名则居文件第一行。
2 一行数据不垮行,无空行。
3 以半角符号,作分隔符,列为空也要表达其存在。
4 列内容如存在,,则用“”包含起来。
5 列内容如存在“”则用“”“”包含。
6 文件读写时引号,逗号操作规则互逆。
7 内码格式不限,可为ASCII、Unicode或者其他。


CSV文件的生成与分析 



CSV文件是指Excel可以识别的后缀名为CSV的文件,网站系统后台用来存储分析数据的时候有可能会用到它。其实CSV文件的读取和做成比较简单,主要的技术点是文件的读写。不过CSV文件的分析和生成有一定的代表性,可以通过对CSV文件的生成和分析的实现,来了解后台处理批量数据的简单思路。

打开Excel,新建一个文件,在里面随便输入一些数据,然后另存为一个CSV文件,再次用Excel打开的时候,发现只有一个sheet。用一个记事本打开这个文件,可以看到类似如下的数据。
aaa,bbb,ccc,ddd
aaa2,bbb2,,ddd2
aaa3,bbb3,ccc3,
aaa4,bbb4,ccc4,ddd4

仔细观察数据,可以确定以下几点:

CSV文件是文本型文件(非二进制)
文件中的一行在Excel中显示的一行
同一行中的数据用半角逗号分隔
发现以上的规律,我们可以自己也生成一个CSV文件。也可以简单的分析CSV文件。
现在给CSV文件的生成和分析写个简单的例子。(如果对文件处理类不熟悉,可以看一下java的文件处理,或者看一下JDK中关于java.io.File类的帮助信息)
生成CSV文件。(HelloCsvCreater.java)

package com.vogoal.test;
import java.io.FileWriter;
import java.io.IOException;
/**
* @author SinNeR
* 
* create a CSV file
*/
public class HelloCsvCreater {
    public static void main(String[] args) {
        try {
            FileWriter fw = new FileWriter("C:\\helloCsv.csv");
            fw.write("aaa,bbb,ccc,ddd,eee,fff,ggg,hhh\r\n");
            fw.write("aa1,bb1,cc1,dd1,ee1,ff1,gg1,hh1\r\n");
            fw.write("aaa\r\n");
            fw.write("aa2,bb2,cc2,dd2,ee2,ff2,gg2,hh2\r\n");
            fw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

这个类编译后运行,可以看到在C盘根目录下生成了一个名字为helloCsv.csv的CSV文件,双击打开,如下的样子。

分析CSV文件

package com.vogoal.test;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* @author SinNeR
* 
* analysis a CSV file
*/
public class HelloCSVAnalysis {
    public static void main(String[] args) {
        InputStreamReader fr = null;
        BufferedReader br = null;
        try {
            fr = new InputStreamReader(new FileInputStream(
                    "C:\\helloCsv.csv"));
            br = new BufferedReader(fr);
            String rec = null;
            String[] argsArr = null;
            while ((rec = br.readLine()) != null) {
                System.out.println(rec);
                argsArr = rec.split(",");
                for (int i = 0; i < argsArr.length; i++) {
                    System.out.println("num " + (i + 1) + ":" + argsArr[i]);
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            try{
                if ( fr != null )
                    fr.close();
                if ( br != null )
                    br.close();
            }catch(IOException ex){
                ex.printStackTrace();
            }
        }
    }
}

这里将刚才生成的csv文件读取并分析。编译后运行,正常情况下,可以看到刚才生成的CSV文件的内容。

至此,CSV文件的生成与分析其实已经完成。如果要写适合自己需要的CSV文件分析类,完全可以根据自己的业务逻辑和需要来自己实现。因为CSV文件的分析确实很简单。

不过上面的程序还是存在一些问题的。这些问题在开发的过程中应当注意,不然可能出现致命的错误。

比较2个类中对资源的释放问题。CSV生成类中FileWriter对象的关闭(close()方法)是在try中执行的。而CSV分析类中InputStreamReader,BufferedReader对象的关闭(close()方法)是在finally中执行的。CSV生成类是错误的。因为在文件和流的生成过程中,是有可能产生IO异常的,如果在对象close前发生IO异常,那么close方法永远不会被调用,这样资源不会及时释放,会产生致命错误的。而在finally中的程序,是一定会被执行的语句,所以即使操作中途发生问题,也会在最后执行close方法。(try-catch-finally是java语法中基本而重要的部分,不熟悉的可查阅相关资料。)
在CSV文件的操作过程中,我们是按照半角逗号来分隔数据的,如果某个数据中正好有半角逗号,那么数据不是出错了?
如果分析的数据有全角字符,是否能够正确分析。(乱码问题)
以上的第二个问题时必须考虑的。在写一个类的时候,不要相信这个类要操作的数据或者得到的数据是好数据(完全符合要求的正确的数据),写好的一个类用完全正确的数据测试完,很有可能一个小小的数据错误的问题,就有可能导致程序处理崩溃。所以,细节问题要充分考虑并对应到,使自己编写的类具有一定的健壮性。


分享到:
评论

相关推荐

    java 解析csv文件例子,csv文件 中文乱码问题

    当处理包含中文字符的CSV文件时,可能会遇到乱码问题,这通常与文件编码设置有关。本篇文章将详细探讨如何在Java中解析CSV文件,并解决中文乱码的问题。 首先,我们需要了解如何使用Java的标准库`java.io`和`java....

    PLSQL导入.csv文件.docx

    PLSQL 导入 CSV 文件 PLSQL 是 Oracle Corporation 开发的程序语言,主要用于开发 Oracle 数据库应用程序。CSV(Comma Separated Values)是通用的文件格式,用于存储表格数据。PLSQL 导入 CSV 文件是指使用 PLSQL ...

    csv大文件打开器

    然而,当CSV文件变得非常大时,传统的文本编辑器或电子表格软件如Microsoft Excel可能会遇到性能问题,甚至无法打开。这就是“csv大文件打开器”的作用所在。 “csv大文件打开器”是一种专门设计用于处理大型CSV...

    CSV文件数据抽取

    CSV文件(Comma Separated Values)是一种常见的数据存储格式,广泛用于数据交换和数据分析任务。它的特点是使用逗号作为字段分隔符,每一行代表一个记录,每列数据对应一个特定的属性。在本场景中,“CSV文件数据...

    csv文件批量合并工具

    CSV文件批量合并工具是一种实用程序,专为处理大量CSV(逗号分隔值)文件而设计。CSV格式广泛用于数据交换,因为它的简单性和通用性,可以被多种应用程序和数据库系统读取。以下是对该工具及其功能的详细解释: 1. ...

    C语言读取CSV文件

    CSV文件以其简洁的格式,被广泛用于存储表格数据,如数据库导出、数据分析等。本篇文章将深入讲解如何使用C语言编写一个读取CSV文件的接口,并探讨相关知识点。 首先,我们需要理解CSV文件的基本结构。CSV文件由一...

    读取创建CSV文件并自动解析文件编码方式

    本文将深入探讨如何读取和创建CSV文件,并特别关注自动解析文件编码方式这一关键环节。我们将使用Java语言进行示例,同时引入第三方库来辅助处理编码问题。 首先,创建CSV文件的基本过程涉及将数据写入具有特定分隔...

    C#文件流读取CSV文件

    CSV文件因其简洁性和通用性,常被用作数据交换格式,特别是在导入和导出表格数据时。 在C#中,我们通常使用`System.IO`命名空间中的类来处理文件流。读取CSV文件时,我们可以使用`FileStream`类打开文件,然后配合`...

    csv文件读写操作

    在MFC(Microsoft Foundation Classes)环境下,利用Visual Studio 2015进行CSV文件的读写操作,可以方便地处理这类数据。本文将详细介绍如何在VS2015的MFC项目中实现CSV文件的读写功能。 1. **CSV文件结构** CSV...

    csv合并工具,csv合并器,csv文件合并工具

    CSV文件批量合并工具(批量合并多个CSV文件)是一款简洁好用,绿色小巧的CSV文件合并工具。CSV文件批量合并工具非常的使用,让你能够更轻松快捷的进行CSV文件合并工作,非常方便。可以同时批量合并多个CSV文本文件,...

    将多个csv文件合并成一个csv文件的工具,C#编写,含源代码。支持忽略列头

    本话题关注的是如何使用C#编程语言来实现一个工具,将多个CSV文件合并为一个单一的CSV文件,同时支持忽略列头。 首先,我们要理解CSV文件的结构。CSV文件是一种纯文本文件,每一行代表一行数据,列与列之间由逗号...

    MFC 读取csv文件

    CSV文件因其简洁的格式和广泛的兼容性而广泛使用。下面我们将详细介绍如何使用MFC来读取CSV文件。 首先,理解CSV文件的基本结构至关重要。CSV文件由一系列行组成,每行包含一个或多个字段,字段之间用逗号分隔。...

    CSV文件导入MDB

    在IT领域,CSV文件常被用来导入各种数据库系统,如Microsoft Access的MDB(Microsoft Jet Database Engine)文件。在本实例中,我们将讨论如何利用VB(Visual Basic)来实现CSV文件中的淘宝订单数据导入到MDB数据库...

    CSV表格拆分,可以把一个CSV文件按固定行数拆分成多个文件

    在处理大数据时,一个大型CSV文件可能会变得难以管理,这时就需要将它拆分成多个小文件。本教程将详细解释如何通过特定工具或编程方式实现CSV表格的拆分。 ### CSV文件的特点 1. **易读性**:由于CSV是纯文本格式,...

    Qt解析CSV文件

    2. **打开CSV文件**:使用QFile类打开CSV文件,然后用QTextStream读取文件内容。 3. **解析CSV数据**:通过CSVparser类或其他自定义方法读取每一行数据,将它们存储在适当的数据结构中。 4. **创建Excel文件**:...

    大的CSV文件分割成小的csv文件

    把大的csv文件分割成小的csv文件,主要针对处理在数据分析时大的csv文件一次加载不进来的问题

    thinkphp下 导入导出csv文件

    1. CSV文件格式:CSV文件是以逗号分隔的纯文本文件,每个记录占据一行,每个字段之间由逗号分隔。这种格式使得数据可以轻松地在各种应用程序之间传递,如电子表格软件(如Microsoft Excel)和数据库系统。 2. ...

    matlab读取csv文件例程,读取指定路径下的所有csv文件

    matlab读取csv文件例程,读取指定路径下的所有csv文件

    VC++读写CSV文件的例子

    在VC++环境中,处理CSV文件可以帮助开发者快速地读取和写入结构化的数据。下面将详细介绍如何使用VC++进行CSV文件的读写操作,并提供相关的编程技巧。 首先,CSV文件的结构非常简单,每一行代表一个记录,每个记录...

Global site tag (gtag.js) - Google Analytics