A. 如何更方便地進行CSV格式文件讀寫
1 基本介紹
可以說CSV格式的文件經常碰到,何為CSV格式,CVS全稱comma-separated values,就是典型的用逗號隔開的文件,比如下面這種文件格式
Name,company
zhangsan,ibm
lisi,oracle
這種就是典型的CSV格式文件。不過也可以擴展到其它符號隔開的字元,比如
Name#company
Zhangsan#ibm
Lisi#oracle
這種也算CSV格式
java開源框架CVSReader提供了一個輕量級、簡單方便的統一操作介面可用,下面具體講解如何操作CVS格式
2 安裝和使用
2.1下載
上面下載到最新的csvreader包。
2.2安裝
直接把jar包分別存放到開發工程的類路徑下面即可使用。
3 讀取CSV格式文件
3.1基本簡介
首先,讀取CSV格式的文件需要創建一個CSVReader,如下
CsvReader reader = new CsvReader(Reader r, char c);
其中第一個參數為讀取文件,第二個參數為分割符,比如「,」,或者「#」
另外,也有其它幾個參數,可以查閱API,比如
CsvReader reader = new CsvReader(InputStream r, char c, Charset charset);等等
其次,一般需要讀取頭信息,如下:
reader.readHeaders();
String[] headers = reader.getHeaders();
讀取了後,指針就會移動到下一行,也就是可以開始讀取文件內容
假如,有多行的話,可以用一個循環套入,例如下面:
while (reader.readRecord()) {
for (int i = 0; i < headers.length; i++) {
String value = reader.get(headers[i]);
System.out.print(value+" ");
}
System.out.println("");
}
B. 如何使用eclipse編寫java程序讀取csv文件中
java有專門操作CSV文件的類和方法。java開源框架csvreader提供了一個輕量級的、簡單方便的統一操作介面可用。要使用CsvReader,CsvWriter需要下載一個javacsv.jar導入到項目中才行,在項目上點擊右鍵--屬性--庫--添加jar文件,選擇javacsv.jar文件即可,然後在程序中用import
com.csvreader.CsvReader,import com.csvreader.CsvWriter導入即可。
示範代碼:
package test;
import com.csvreader.CsvReader;
import com.csvreader.CsvWriter;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class readandwrite {
public static void main(String[] args) throws IOException {
String [] str = {"省","市","區","街","路","里","幢","村","室","園","苑","巷","號"};
String inString = "";
String tmpString = "";
File inFile = new File("C://in.csv"); // 讀取的CSV文件
File outFile = new File("C://outtest.csv");//輸出的CSV文
try {
BufferedReader reader = new BufferedReader(new FileReader(inFile));
BufferedWriter writer = new BufferedWriter(new FileWriter(outFile));
CsvReader creader = new CsvReader(reader, ',');
CsvWriter cwriter = new CsvWriter(writer,',');
while(creader.readRecord()){
inString = creader.getRawRecord();//讀取一行數據
for(int i = 0;i < str.length;i++){
tmpString = inString.replace(str[i], "," + str[i] + ",");
inString = tmpString;
}
//第一個參數表示要寫入的字元串數組,每一個元素佔一個單元格,第二個參數為true時表示寫完數據後自動換行
cwriter.writeRecord(inString.split(","), true);
//注意,此時再用cwriter.write(inString)方法寫入數據將會看到只往第一個單元格寫入了數據,「,」沒起到調到下一個單元格的作用
//如果用cwriter.write(String str)方法來寫數據,則要用cwriter.endRecord()方法來實現換行
//cwriter.endRecord();//換行
cwriter.flush();//刷新數據
}
creader.close();
cwriter.close();
} catch (FileNotFoundException ex) {
ex.printStackTrace();
}
}
}
C. java要怎麼修改csv中指定行列位置的值
java讀取csv文件,按照指定格式: import java.io.IOException; import java.nio.charset.Charset; import java.util.ArrayList; import com.csvreader.CsvReader; import com.csvreader.CsvWriter; /** * 讀取CSV文件 * 所謂"CSV",是Comma Separated Value(逗號分隔值)的英文縮寫,通常都是純文本文件。 * 可以看成資料庫程序與電子表格之間一種中間通信文件,資料庫可以導出。csv格式,excel也可以導入並打開。csv文件,例子如下 * sj_mino一00一.jpg,漆一5二吧二,四FB55FE吧, * sj_mino一00二.jpg,四漆一二吧9,9三二0三C5C, * sj_mino一00三.jpg,四5一9二9,C四E吧0四陸漆, * */ public class CSVDeal{ public static void main(String[] args) { try { String[] stringList; String csvFilePath = "C:\\Users\\Administrator\\Desktop\\二0一四0二二漆一三59三陸.csv"; String sourceFileString= "C:\\Users\\Administrator\\Desktop\\test.csv"; CsvReader reader = new CsvReader(csvFilePath); //默認是逗號分隔符,UTF-吧編碼 CsvWriter writer = new CsvWriter(sourceFileString); /* * readRecord()判斷是否還有記錄,getValues()讀取當前記錄,然後指針下移 */ reader.readRecord(); writer.writeRecord(reader.getValues()); //讀取表頭 /* * 逐行讀取,以免文件太大 * 處理表頭後面的數據,這里是在第一二列數據統一加前綴"V" */ while(reader.readRecord()){ stringList = reader.getValues(); stringList[一一] = 'V' + stringList[一一]; writer.writeRecord(stringList); } reader.close(); writer.close(); }catch(Exception ex){ System.out.println(ex); } }
D. java 怎麼讀取hdfs上csv文件的某一列
java 怎麼讀取hdfs上csv文件的某一列
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import com.csvreader.CsvReader;
import com.csvreader.CsvWriter;
/**
* 讀取CSV文件
* 所謂"CSV",是Comma Separated Value(逗號分隔值)的英文縮寫,通常都是純文本文件。
* 可以看成資料庫程序與電子表格之間一種中間通信文件,資料庫可以導出。csv格式,excel也可以導入並打開。csv文件,例子如下
* sj_mino1001.jpg,715282,4FB55FE8,
* sj_mino1002.jpg,471289,93203C5C,
* sj_mino1003.jpg,451929,C4E80467,
*
*/
public class CSVDeal{
public static void main(String[] args) {
try {
String[] stringList;
String csvFilePath = "C:\\Users\\Administrator\\Desktop\\20140227135936.csv";
String sourceFileString= "C:\\Users\\Administrator\\Desktop\\test.csv";
CsvReader reader = new CsvReader(csvFilePath); //默認是逗號分隔符,UTF-8編碼
CsvWriter writer = new CsvWriter(sourceFileString);
/*
* readRecord()判斷是否還有記錄,getValues()讀取當前記錄,然後指針下移
*/
reader.readRecord();
writer.writeRecord(reader.getValues()); //讀取表頭
/*
* 逐行讀取,以免文件太大
* 處理表頭後面的數據,這里是在第12列數據統一加前綴"V"
*/
while(reader.readRecord()){
stringList = reader.getValues();
stringList[11] = 'V' + stringList[11];
writer.writeRecord(stringList);
}
reader.close();
writer.close();
}catch(Exception ex){
System.out.println(ex);
}
}
}
E. javacsv.jar包已經下載但是CsvReader無法引用
<scope>compile</scope> 添加這個試試?
java已轉賣保險,如有需要請支持
F. 求個java讀取csv文件並輸出的程序
要使用CsvReader,CsvWriter需要下載一個javacsv.jar導入到項目中
packagetest;importcom.csvreader.CsvReader;importcom.csvreader.CsvWriter;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileReader;importjava.io.FileWriter;importjava.io.IOException;publicclassreadandwrite{publicstaticvoidmain(String[]args)throwsIOException{String[]str={"省","市","區","街","路","里","幢","村","室","園","苑","巷","號"};StringinString="";StringtmpString="";FileinFile=newFile("C://in.csv");//讀取的CSV文件FileoutFile=newFile("C://outtest.csv");//輸出的CSV文try{BufferedReaderreader=newBufferedReader(newFileReader(inFile));BufferedWriterwriter=newBufferedWriter(newFileWriter(outFile));CsvReadercreader=newCsvReader(reader,',');CsvWritercwriter=newCsvWriter(writer,',');while(creader.readRecord()){inString=creader.getRawRecord();//讀取一行數據for(inti=0;i<str.length;i++){tmpString=inString.replace(str[i],","+str[i]+",");inString=tmpString;}//第一個參數表示要寫入的字元串數組,每一個元素佔一個單元格,第二個參數為true時表示寫完數據後自動換行cwriter.writeRecord(inString.split(","),true);//注意,此時再用cwriter.write(inString)方法寫入數據將會看到只往第一個單元格寫入了數據,「,」沒起到調到下一個單元格的作用//如果用cwriter.write(Stringstr)方法來寫數據,則要用cwriter.endRecord()方法來實現換行//cwriter.endRecord();//換行cwriter.flush();//刷新數據}creader.close();cwriter.close();}catch(FileNotFoundExceptionex){ex.printStackTrace();}}}
G. java讀取csv文件
importjava.io.BufferedReader;
importjava.io.FileReader;
importjava.util.*;
publicclassTest{
publicstaticvoidmain(String[]args){
Hashtable<String,String[]>dict=newHashtable<String,String[]>();
try{
BufferedReaderreader=newBufferedReader(newFileReader("test.csv"));
Stringline=null;
while((line=reader.readLine())!=null){
Stringitem[]=line.split(",");
Stringitem2[]=newString[19];
System.array(item,1,item2,0,19);
dict.put(item[0],item2);
}
Enumeratione2=dict.keys();
while(e2.hasMoreElements()){
Stringkey=(String)e2.nextElement();
System.out.println(key);
String[]dd=(String[])dict.get(key);
for(inti=0;i<dd.length;i++){
System.out.print(dd[i]+" ");
}
System.out.println();
}
}
catch(Exceptione){
e.printStackTrace();
}
}
}
H. java讀取CSV文件
可以通過流的形式讀取到所有內容,之後在轉換成元素的形式進行實現。舉例:
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.*;
public class Test{
public static void main(String[] args) {
Hashtable<String, String[]> dict = new Hashtable<String, String[]>();
try {
BufferedReader reader = new BufferedReader(new FileReader("test.csv"));
String line = null;
while((line=reader.readLine())!=null){
String item[] = line.split(",");
String item2[] = new String[19];
System.array(item,1,item2,0,19);
dict.put(item[0],item2);
}
Enumeration e2 = dict.keys();
while (e2.hasMoreElements()) {
String key = (String) e2.nextElement();
System.out.println(key);
String[] dd = (String[])dict.get(key);
for (int i=0;i<dd.length;i++) {
System.out.print(dd[i]+"\t");
}
System.out.println();
}
}
catch (Exception e) {
e.printStackTrace();
}
}
}
I. 如何用java解析CSV文件
思想:先獲取csv文件的路徑,通過BufferedReader類去讀該路徑中的文件,使用readLine方法進行逐行讀取。
注意:使用readLine方法後會自動轉到下一行。因此在判斷是否為空後得先將讀取到的內容賦值給一變數,在循環中使用該變數即可。
publicstaticvoidmain(String[]args)
{
Filecsv=newFile("C:\Users\chenxumin\Desktop\Result.csv");//CSV文件路徑
BufferedReaderbr=null;
try
{
br=newBufferedReader(newFileReader(csv));
}catch(FileNotFoundExceptione)
{
e.printStackTrace();
}
Stringline="";
StringeveryLine="";
try{
List<String>allString=newArrayList<>();
while((line=br.readLine())!=null)//讀取到的內容給line變數
{
everyLine=line;
System.out.println(everyLine);
allString.add(everyLine);
}
System.out.println("csv表格中所有行數:"+allString.size());
}catch(IOExceptione)
{
e.printStackTrace();
}
}
J. java 讀取csv文件里指定行列的值,比如讀取第三行第二列的值。
java讀取csv文件,按照指定格式:
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import com.csvreader.CsvReader;
import com.csvreader.CsvWriter;
/**
* 讀取CSV文件
* 所謂"CSV",是Comma Separated Value(逗號分隔值)的英文縮寫,通常都是純文本文件。
* 可以看成資料庫程序與電子表格之間一種中間通信文件,資料庫可以導出。csv格式,excel也可以導入並打開。csv文件,例子如下
* sj_mino1001.jpg,715282,4FB55FE8,
* sj_mino1002.jpg,471289,93203C5C,
* sj_mino1003.jpg,451929,C4E80467,
*
*/
public class CSVDeal{
public static void main(String[] args) {
try {
String[] stringList;
String csvFilePath = "C:\\Users\\Administrator\\Desktop\\20140227135936.csv";
String sourceFileString= "C:\\Users\\Administrator\\Desktop\\test.csv";
CsvReader reader = new CsvReader(csvFilePath); //默認是逗號分隔符,UTF-8編碼
CsvWriter writer = new CsvWriter(sourceFileString);
/*
* readRecord()判斷是否還有記錄,getValues()讀取當前記錄,然後指針下移
*/
reader.readRecord();
writer.writeRecord(reader.getValues()); //讀取表頭
/*
* 逐行讀取,以免文件太大
* 處理表頭後面的數據,這里是在第12列數據統一加前綴"V"
*/
while(reader.readRecord()){
stringList = reader.getValues();
stringList[11] = 'V' + stringList[11];
writer.writeRecord(stringList);
}
reader.close();
writer.close();
}catch(Exception ex){
System.out.println(ex);
}
}
}