JAVA不能写底层代码吗_Java底层代码实现单文件读取和写入(解决中文乱码问题)...

需求:

将"E:/data/车站一次/阿坝藏族羌族自治州.csv"文件中的内容读取,写入到"E:/data//车站一次.csv"。

代码: public class FileOpe {

public static void main(String[] args) {

sigle();

}

public static void sigle(){

BufferedReader bufr = null;

BufferedWriter bufw = null;

try {

FileReader fr = new FileReader( "E:/data/车站一次/阿坝藏族羌族自治州.csv");

bufr = new BufferedReader(fr);

FileWriter fw = new FileWriter( "E:/data//车站一次.csv",true);

bufw = new BufferedWriter(fw);

String line = null;

while((line=bufr.readLine())!=null){

bufw.write(line);

bufw.newLine();

bufw.flush();

}

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally{

try {

if(bufr!=null)

bufr.close();

if(bufw!=null)

bufw.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

但是,这样写程序会出现乱码问题,在用Java程序读写含中文的文件时,经常会出现乱码问题。

这是因为系统的编码和程序的编码采用了不同的编码格式。通常,windows自身擦采用的编码格式是gbk,

而IDE中Encode默认是utf-8的编码,这就是为什么会出现乱码的原因。为了避免可能得中文乱码问题,

最好在文件读取和写入的时候显式指定编码格式。

读文件:

public static String readFile(String fileName){

String fileContent = null;

BufferedReader bufr = null;

try{

File f = new File(fileName);

InputStreamReader read = new InputStreamReader(new FileInputStream(f),"gbk");

bufr= new BufferedReader(read);

String line = null;

while ((line = bufr.readLine()) != null){

fileContent += line;

}

} catch (Exception e)

{

e.printStackTrace();

} finally{

read.close();

}

return fileContent;

}

写文件:

public static void writeFile(String fileName, String fileContent){

BufferedWriter bufw = null;

try{

File f = new File(fileName);

OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(f),"gbk");

bufw = new BufferedWriter(write);

bufw.write(fileContent);

} catch (Exception e)

{

e.printStackTrace();

} finally{

bufw.close();

}

}

解决乱码问题后,代码如下:

public class FileDemo {

public static void main(String[] args) {

BufferedReader bufr = null;

BufferedWriter bufw = null;

try {

FileInputStream in = new FileInputStream("E:/data/车站一次/阿坝藏族羌族自治州.csv");

InputStreamReader insr = new InputStreamReader(in, "gbk");

bufr = new BufferedReader(insr);

FileWriter fw = new FileWriter("E:/data/a.csv", true);

bufw = new BufferedWriter(fw);

String line = null;

while((line=bufr.readLine())!=null){

bufw.write(line);

bufw.newLine();

bufw.flush();

}

bufr.close();

bufw.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

}

这样就不会出现乱码问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值