FileInputStream FileOutputStream的用法总结
采用byte数组保存内容.适合小文件的读取写入操作
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/**
*
* @author hb
*/
public class FileIo {
/**
* 输入流 InputStream 字节
* 输出流 OutputStream 字节
*/
public static void main(String[] args) {
//String str="中南林业科技大学";
// String Path="d:\\ISO.vdi";//测试大文件的读取available(),zip文件发现不会读完一个就自动补充到输入流。镜像文件会自动补充
String Path = "d:\\1.docx";
String Path1 = "d:\\2.txt";
byte[] bf={-42,-48,-60,-49,-63,-42,-46,-75,-65,-58,-68,-68,-76,-13,-47,-89};//中南林业科技大学的字节.
File f= new File(Path);
File f1= new File(Path1);
byte b[]=reader(f);
writter(f1,b);
}
public static void writter(File f,byte bs[]){
if(!f.exists()){
try {
f.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
FileOutputStream fos = new FileOutputStream(f,true);//将内容加到末尾
// FileOutputStream fos = new FileOutputStream(f);//覆盖文件
//**********************遍历方法1***********
// byte[] bs = str.getBytes();
// fos.write(bf);
//方法2:如果需要屏蔽某些关键字,用for来遍历。***********
for(byte b:bs){
fos.write(b);
}
//写入速度太慢,强制将数据输出到目标
fos.flush();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static byte[] reader(File f){
try {
FileInputStream fis = new FileInputStream(f);
int len = fis.available();
byte [] bs=new byte[len];
//*********************************************************//
// while(len>0){
// int b= fis.read();
// System.out.println(b);
// System.out.println(fis.available());
// len=fis.available();
// }
//*********************************************************//
// int i=0;
// int b= fis.read();
// while(b!=-1){
// bs[i]=(byte)b;
// i++;
// b= fis.read();
//
//
// }
//*********************************************************//
fis.read(bs);
fis.close();
String str= new String(bs);
System.out.println(str);
return bs;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}