Java底层代码实现单文件读取和写入(解决中文乱码问题)
2014-07-10 20:59
1081 查看
需求:
将"E:/data/车站一次/阿坝藏族羌族自治州.csv"文件中的内容读取,写入到"E:/data//车站一次.csv"。
代码:
但是,这样写程序会出现乱码问题,在用Java程序读写含中文的文件时,经常会出现乱码问题。
这是因为系统的编码和程序的编码采用了不同的编码格式。通常,windows自身擦采用的编码格式是gbk,
而IDE中Encode默认是utf-8的编码,这就是为什么会出现乱码的原因。为了避免可能得中文乱码问题,
最好在文件读取和写入的时候显式指定编码格式。
读文件:
写文件:
解决乱码问题后,代码如下:
这样就不会出现乱码问题。
将"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(); } } }
这样就不会出现乱码问题。
相关文章推荐
- Java IO 读取/写入文件 中文乱码困难解决代码
- Java读取properties文件中文乱码问题解决
- Java读取ini文件和中文乱码问题解决
- Java读取properties文件中文乱码问题解决
- Java 读取ANSI文件中文乱码问题解决方式
- java web 利用 commons-fileupload-1.2 实现文件上传 解决 中文乱码& 非文件属性的读取
- 解决Java读取properties文件中文乱码的问题
- java实现ftp文件上传下载,解决慢,中文乱码,多个文件下载等问题
- Java读取、写入文件如何解决乱码问题
- Java读取文件 解决中文乱码问题
- Java读取properties文件中文乱码问题的解决
- Python实现的json文件读取及中文乱码显示问题解决方法
- Java读取、写入文件如何解决乱码问题
- java实现中文文件下载,解决乱码问题,亲测无问题~~
- Java读取properties文件中文乱码问题解决
- Java实现ftp文件上传下载解决慢中文乱码多个文件下载等问题
- Java中按照行读取和写入文件 日志常用操作 解决中文乱码问题
- Java读取properties文件中文乱码问题解决
- java获得*.properties配置文件的值,解决读取中文时乱码的问题:
- Java底层代码实现多文件读取和写入