java文件传输基础:OutputStream类及实现文件的复制

前面我们已经学习过文件的输入流InputStream类的有关基础操作,今天我们来学习相对应的OutputStream类的有关内容
FileOutputStream-OutputStream的子类,用于向文件中写入byte数据。我们直接来看与文件写操作相关的内容,以及如何通过FileInputStreamFileOutputStream类来实现文件的拷贝。

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"));
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值