須要引入javacsv.jarjava
如下爲一個完整的Utils的寫法,具體輸出和輸入須要本身修改參數。spring
import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.nio.charset.Charset; import java.util.Random; import org.springframework.util.StringUtils; import com.csvreader.CsvReader; import com.csvreader.CsvWriter; /** * 獲取和寫入csv文件內容 * <p> * @author DennyZhao * @since 1.0.0 */ public class CSVUtils { /** * 默認分隔符 */ private static final char DEFAULT_SEPERATE_CHAR = ','; /** * 默認charset */ private static final Charset DEFAULT_CHARSET = Charset.defaultCharset(); /** * 寫數據 * @param targetFilePath * @param fileName * @param seperateChar * @param charsetName * @throws IOException */ public static void writeFile(String targetFilePath, String fileName, char seperateChar, String charsetName) throws IOException { // 判斷文件是否存在 File file = new File(targetFilePath); if(!file.exists()) { file.mkdirs(); } // 判斷是否有seperateChar if(seperateChar == 0) { seperateChar = DEFAULT_SEPERATE_CHAR; } // 判斷是否有charset Charset charset = DEFAULT_CHARSET; if(!StringUtils.isEmpty(charsetName)) { charset = Charset.forName(charsetName); } String filePath = targetFilePath + File.separatorChar + fileName; // 獲取csv文件及其數據 CsvWriter csvWriter = new CsvWriter(filePath, seperateChar, charset); csvWriter.setForceQualifier(true); //這個決定了通常文件打開是否是有「」存在 String[] strHeader = {"userId","userName", "userAge"}; csvWriter.writeRecord(strHeader); for(int i=0; i < 50; i++) { String[] strArray = {i + "","張三" + i, (new Random()).nextInt(100) + ""}; csvWriter.writeRecord(strArray); } csvWriter.endRecord(); csvWriter.close(); } /** * 讀取csv文件中的數據 * @param originFile 要讀入的文件 * @param seperateChar 分割符 * @param charsetName 編碼格式 * @throws IOException */ public static void readFile(String originFile, char seperateChar, String charsetName) throws IOException { // 判斷文件是否存在 File file = new File(originFile); if(!file.exists()) { System.out.println("file is not exist..."); return; } // 判斷是否有seperateChar if(seperateChar == 0) { seperateChar = DEFAULT_SEPERATE_CHAR; } // 判斷是否有charset Charset charset = DEFAULT_CHARSET; if(!StringUtils.isEmpty(charsetName)) { charset = Charset.forName(charsetName); } // 獲取csv文件及其數據 CsvReader csvReader = new CsvReader(originFile, seperateChar, charset); while(csvReader.readRecord()) { //讀取完畢 if(csvReader.getColumnCount() == 0) { break; } long index = csvReader.getCurrentRecord(); //當前記錄index System.out.println("index: " + index); if(index == 0) { String[] headerArray = csvReader.getValues(); } String userName = csvReader.get(1); //讀取單條數據 String[] valArray = csvReader.getValues(); //讀取數據變爲數組 String recorder = csvReader.getRawRecord(); //直接讀取一行數據 } csvReader.close(); } public static void main(String[] args) throws IOException { // 讀數據 //String originFile = "C:\\Users\\zhaoq\\Desktop\\reader.csv"; //readFile(originFile, ',', "gb2312"); // 寫數據 String targetFilePath = "C:\\Users\\zhaoq\\Desktop"; String fileName = "writer.csv"; writeFile(targetFilePath, fileName, ',', "gb2312"); } }