java 文件读取中文乱码_JAVA本地读取文件,解决中文乱码问题

import java.io.BufferedInputStream;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

import java.io.Reader;

public class InPutcopy {

public static void main(String[] args) throws IOException {

// TODO Auto-generated method stub

File file=new File("C:\Users\绝影\Desktop\桌面.txt");//创建一个新的file实例

File fi=new File("C:\Users\绝影\Desktop\7777.txt");

//读出对应输入流

InputStream input = null;

OutputStream out = null;

InputStreamReader inp=null;

OutputStreamWriter ou=null;

BufferedReader reader=null;

BufferedWriter write=null;

try {

input = new FileInputStream(file);

inp=new InputStreamReader(input,"GBK");//字节流字符流转化的桥梁

out=new FileOutputStream(fi);//建立文件字节输出流

ou=new OutputStreamWriter(out);//字节流字符流转化的桥梁

write= new BufferedWriter(ou);//缓冲读取字符 将字节流封装成BufferedReader对象

reader = new BufferedReader(inp);//以字符流方式读入

char a[]=new char[21];

byte b[]=new byte[21];

FileReader filer=new FileReader(file);

FileWriter filer1=new FileWriter(fi);

/* 中文不会乱码*/

reader.read(a);

write.write(a);

/* 中文不会乱码*/

/*inp.read(a);

ou.write(a);*/

//中文不会乱码

/*input.read(b);

out.write(b);*/

//input.read(b);//放入字节数组

//字节数组的read方法的源码,下面可知input.read(b)不会导致数组越界,就是担心文件内容放不了进入数组的情况,因为这个read方法本身

//数组放入多少是已经固定的,并非将文件内容一下子全部放入,所以不会有越界情况

/*public int read(byte b[]) throws IOException {

return read(b, 0, b.length);

}*/

for(int i=0;i<21;i++) {

//System.out.println(b[i]);//48---57

System.out.println(a[i]);//这里不懂,BufferedReader中的参数换inp后前面的部分字符没有输出

}

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally {

inp.close();

ou.close();

input.close();

out.close();

//reader.close();

//write.close();//这里把输出流关闭也会和write.flush()一样的效果,有点类似数据库的事务提交

}

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值