当前位置: 代码迷 >> Web前端 >> 资料的读写 - java FileInputStream
  详细解决方案

资料的读写 - java FileInputStream

热度:539   发布时间:2012-09-01 09:33:03.0
文件的读写 -- java FileInputStream

一 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);??
//?}?
}

  相关解决方案