前面我们已经学习过文件的输入流InputStream类的有关基础操作,今天我们来学习相对应的OutputStream类的有关内容
FileOutputStream-OutputStream的子类,用于向文件中写入byte数据。我们直接来看与文件写操作相关的内容,以及如何通过FileInputStream和FileOutputStream类来实现文件的拷贝。
public class fileoutputstream {
/*
* FileOutputStream实现了向文件中写入byte数据的方法
*/
public void printHex(String Filename) throws Exception {
/*
* 读取指定文件内容,按照16进制输出
* 每输出10个byte换行
*/
//把文件作为字节流进行读操作
FileInputStream in=new FileInputStream(Filename);
int b;
int i=1;
while((b=in.read())!=-1) {
if(b<=0xf) {
System.out.print("0");
}
System.out.print(Integer.toHexString(b)+" ");
if(i++%10==0) {//i先做运算,做完之后再+1
System.out.println();
}
}
in.close();
}
public void CopyFile(File src,File dest) throws Exception{
if(!src.exists()) {
throw new IllegalArgumentException("文件不存在");//参数异常
}
if(!src.isFile()) {
throw new IllegalArgumentException("不是文件!");
}
FileInputStream in=new FileInputStream(src);
FileOutputStream out=new FileOutputStream(dest);
byte[] buf=new byte[8*1024];
int b;
while((b=in.read(buf,0,buf.length))!=-1) {
out.write(buf,0, b);
out.flush();
}
in.close();
out.close();
}
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
/*
* 如果该文件不存在,则直接创建,如果文件存在,则删除后重新创建
* 如果在文件后面加true,则在文件之后追加内容(注意:如果不加true,则原文件的内容会被清空!)
*/
File file=new File("demo/out.dat");
if(!file.exists()) {
file.mkdirs();
}
FileOutputStream out=new FileOutputStream("demo/out.dat");
out.write('A');//写出了A字符的低八位
out.write('B');//写出了B字符的低八位
int a=10;//write方法一次只能写八位,一个整数需要写四次
out.write(a>>>24);
out.write(a>>>16);
out.write(a>>>8);
out.write(a);
byte[] gbk="中国".getBytes("gbk");
out.write(gbk);
out.close();
fileoutputstream out1=new fileoutputstream();
out1.printHex("demo/out.dat");
out1.CopyFile(new File("D:\\log_network.txt"),new File("D:\\log_networkcopy.txt"));
}
}