一 FileInputStream 方式读写 可以读写 jpg doc txt等文件,因为 以字节流 方式传输
二 FileReader 方式读写 只能读写txt文件,因为以 字符流 方式传输
package test.file;
import java.io.*;
public class FileIOTest {
/** * 读取的字符 为-1 表示文件结束 对中文采用unicode * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub FileIOTest f = new FileIOTest(); try { f.ReadWriteFileByByte(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
} //用字节流传输 可以将字节流转换成指定的字符流 详见 函数ReadWriteFile public void ReadWriteFileByByte() throws IOException{ String sfile = "c:\\企业文化(1)(1).doc";// String sfile = "c:\\ask.jpg"; String dfile ="d:\\企业文化(1)(1).doc"; File srcFile = new File(sfile); File destFile = new File(dfile); try { if(!destFile.exists()){ destFile.createNewFile(); } FileInputStream fin = new FileInputStream(srcFile); FileOutputStream fout = new FileOutputStream(destFile);// 在末尾追加字符// FileOutputStream fout = new FileOutputStream(destFile,true); //这样是不对的 因为无法检测是否为-1 表示文件结束 // byte[] bytes = new byte[1024];// fin.read(bytes);// fout.write(bytes); // 一次读取1024字节 byte[] bytes = new byte[1024]; while(fin.read(bytes)!=-1){ fout.write(bytes); fout.flush(); } fin.close(); fout.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } //用字符流输入输出 readline 一行一行地读取 public void ReadWriteFile() throws IOException{ //只能打开txt 文件 复制 c:\\企业文化.doc就出现乱码 String sfile = "c:\\ProjectEstablishFinderImpl.java"; String dfile ="d:\\ProjectEstablishFinderImpl.java";//转换编码 这里没有用到 File srcFile = new File(sfile); FileInputStream fin1 = new FileInputStream(srcFile); InputStreamReader ins1 = new InputStreamReader(fin1,"utf-8"); // 转换编码结束// File destFile = new File(dfile);// FileOutputStream fout = new FileOutputStream(destFile);// OutputStreamWriter outs = new OutputStreamWriter(fout); FileReader ins = new FileReader(sfile); FileWriter outs = new FileWriter(dfile); BufferedReader readBuf = new BufferedReader(ins); BufferedWriter writeBuf = new BufferedWriter(outs); String s = null; while((s=readBuf.readLine())!=null){// System.out.println(s); writeBuf.write(s); writeBuf.newLine();//启用新的一行 writeBuf.flush(); } readBuf.close(); writeBuf.close(); }
//编码转换~~ // public String encode(byte[] array){ // String~~// return EncodingUtils.getString(array,TEXT_ENCODING); // } }