JAVA本地讀取文件,解決中文亂碼問題
阿新 • • 發佈:2018-11-24
也會 oid users str fileread lock clas puts 字節流
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()一樣的效果,有點類似數據庫的事務提交
}
}
}
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()一樣的效果,有點類似數據庫的事務提交
}
}
}
JAVA本地讀取文件,解決中文亂碼問題