cvs格式實際上就是字元串,直接通過英文」,「來進行的間隔顯示,所以直接寫入的時候直接在流中添加英文標點逗號即可。
實現思路:就是將需要保留的內容寫入另外一個cvs文件中在滿足條件處進行增加、刪除、修改操作。
可以通過BufferedReader 流的形式進行流緩存,之後通過readLine方法獲取到緩存的內容。
BufferedReader bre = null;
OutputStreamWriter pw = null;//定義一個流
try {
String file = "D:/test/test.xml";
bre = new BufferedReader(new FileReader(file));//此時獲取到的bre就是整個文件的緩存流
pw = new OutputStreamWriter(new FileOutputStream(「D:/New.cvs」),"GBK");//確認流的輸出文件和編碼格式,此過程創建了「test.cvs」實例
while ((str = bre.readLine())!= null) // 判斷最後一行不存在,為空結束循環
{
if(!str.indexOf("<end>")){//判斷如果不滿足cvs行條件就刪除
pw.write(str);//將要寫入文件的內容,可以多次write
}
};
bre.close();
pw.close();//關閉流
備註:文件流用完之後必須及時通過close方法關閉,否則會一直處於打開狀態,直至程序停止,增加系統負擔。
2. 求個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();}}}
3. 如何使用eclipse編寫java程序讀取csv文件中
package ImportTestData;
import java.io.BufferedReader;
import java.io.FileReader;
public class Test {
public static void main(String[] args) {
try {
BufferedReader reader = new BufferedReader(new FileReader("a.csv"));//換成你的文件名
reader.readLine();//第一行信息,為標題信息,不用,如果需要,注釋掉
String line = null;
while((line=reader.readLine())!=null){
String item[] = line.split(",");//CSV格式文件為逗號分隔符文件,這里根據逗號切分
String last = item[item.length-1];//這就是你要的數據了
//int value = Integer.parseInt(last);//如果是數值,可以轉化為數值
System.out.println(last);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
4. 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();
}
}
}
5. java 讀取csv文件里指定行列的值,比如讀取第三行第二列的值。
import java.io.BufferedReader;
import java.io.FileReader;
public class Test {
public void test(int row,int col){
try {
BufferedReader reader = new BufferedReader(new FileReader("C:\a.csv"));//換成你的文件名
// reader.readLine();//第一行信息,為標題信息,不用,如果需要,注釋掉
String line = null;
int index=0;
while((line=reader.readLine())!=null){
String item[] = line.split(" ");//CSV格式文件為逗號分隔符文件,這里根據逗號切分
if(index==row-1){
if(item.length>=col-1){
String last = item[col-1];//這就是你要的數據了
System.out.println(last);
}
}
//int value = Integer.parseInt(last);//如果是數值,可以轉化為數值
index++;
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) {
Test test = new Test();
test.test(3, 2);
}
}
你的數據格式有問題,空格的個數不確定,沒辦法每行用空格分隔。以下是我調整後的數據格式每行的數據以一個空格分隔,test方法傳入的參數一次是,行,列:
1電機1
2WBS2
3PID3
4CP
5社供出
6原価実績
7社供WC
8外注費
9直材費
10自家製品
11直経費
12その他
13注殘
14注殘