java读写csv文件,中文乱码问题

本文详细介绍了使用Java进行CSV文件的读取与写入操作,特别针对中文乱码问题提供了解决方案,并通过示例代码进行了演示。

java读写csv文件,中文乱码问题

read

/**
  * 读取文件中的内容
  * @param file
  * @return
  */
 public Vector<String> readFile(File file){
  Vector<String> vector=new Vector<String>();
  
  if(file !=null && file.exists() && file.isFile() ){
   try {
    BufferedReader bufferdReader=new BufferedReader(new InputStreamReader(new FileInputStream(file),"GBK"));
    String strTem="";
    while((strTem=bufferdReader.readLine())!=null){
     vector.add(strTem);
    }
    log.debug("readfile:"+file);
   } catch (UnsupportedEncodingException e) {
    log.error(e.toString(),e.fillInStackTrace());
   } catch (FileNotFoundException e) {
    log.error(e.toString(),e.fillInStackTrace());
   } catch (IOException e) {
    log.error(e.toString(),e.fillInStackTrace());
   }
  }
  return vector;
 }

 

 

 

 

Write:

/**
  * 写一行数据到文件中,支持中文
  * @param file  文件
  * @param vector 数据
  * @return
  */
 public boolean writeFile(File file,Vector<String> vector){
    try {
   

        BufferedWriter bw =new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "GBK")) ;// 附加
        // 添加新的数据行
        for (String s :vector) {
         bw.write(s);
         bw.newLine();
     }
 
        bw.close();
        log.debug("\n wirite file:"+file);
      } catch (FileNotFoundException e) {
       log.error(e.toString(),e.fillInStackTrace());
       return false;
      } catch (IOException e) {
       log.error(e.toString(),e.fillInStackTrace());
       return false;
      }
   
  return true;
 }

 

--java util

 

package com.think.common.file.csv;

import java.io.File;
import java.util.Vector;

import org.apache.log4j.Logger;
import org.junit.Test;

public class CSVFileResolveTest {

 Logger log = Logger.getLogger(CSVFileResolveTest.class);
 CSVFileResolve csvFileResolve = new CSVFileResolve();

 @Test
 public void testWriteCSVFile() {

  Vector<String> vector = new Vector<String>();
  vector.add("中国百姓");
  vector.add("11");
  vector.add("22");
  csvFileResolve.writeFile("a.csv", vector);
 }

 @Test
 public void testwriteCSVFile() {
  File file = new File("c.csv");
  Vector<String> vector = new Vector<String>();
  vector.add("中国百姓");
  vector.add("11");
  vector.add("22");
  csvFileResolve.writeFile(file, vector);
 }

 @Test
 public void testreadFile() {
  File file = new File("c.csv");
  Vector<String> vector = csvFileResolve.readFile(file);
  for (String s : vector) {
   log.debug(s);
  }
 }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值