Java暑期学习第二十九天日报

一、今日学习的内容:

今日学习12.3的综合实例的内容。

二、遇到的问题:

三、明日计划:

明天计划学习12.5的课后习题。

今日学习的具体内容:

综合实例——写一个工具类,实现读写文件和复制文件

package test3;
import java.io.*;
public class IOUtils {
    public static void main(String[] args) {
        byte[] ary= {41,4,-2,(byte)0xfe,(byte)0xff};
        for(int b:ary) {
            b&=0xff;
            if(b<=0xf)
                System.out.print("0");
            System.out.print(Integer.toHexString(b)+" ");
        }
        System.out.println();
    }
    public static byte[] read(String file) {
        try {
            InputStream in=new FileInputStream(file);
            byte[] buf=new byte[in.available()];
            in.read(buf);
            in.close();
            return buf;
        }catch(IOException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
    public static Object deepCopy(Object obj) {
        try {
            ByteArrayOutputStream buf=new ByteArrayOutputStream();
            ObjectOutputStream oos=new ObjectOutputStream(buf);
            oos.writeObject(obj);
            oos.close();
            byte[] ary=buf.toByteArray();
            ObjectInputStream ois=new ObjectInputStream(new ByteArrayInputStream(ary));
            Object o=ois.readObject();
            ois.close();
            return o;
        }catch(Exception e) {
            throw new RuntimeException(e);
        }
    }
    public static void cp(File from,File to) {
        try {
            InputStream in=new FileInputStream(from);
            OutputStream out=new FileOutputStream(to);
            byte[] buf=new byte[1024];
            int n;
            while((n=in.read(buf))!=-1) {
                out.write(buf,0,n);
            }
            in.close();
            out.close();
        }catch(IOException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
    public static void cpl(File from,File to) {
        try {
            InputStream in=new FileInputStream(from);
            OutputStream out=new FileOutputStream(to);
            int b;
            while((b=in.read())!=-1) {
                out.write(b);
            }
            in.close();
            out.close();
        }catch(IOException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
    public static void cp(String from,String to) {
        cp(new File(from),new File(to));
    }
    /**将文件按照16进制形式打印到控制台,每16个byte为一行*/
    public static void print(File file) {
        try {
            InputStream in=new FileInputStream(file);
            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++%16==0) {
                    System.out.println();
                }
            }
            System.out.println();
            in.close();
        }catch(IOException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
    public static void print(String file) {
        print(new File(file));
    }
    public static void split(String file,int size) {
        try {
            if(size<=0) {
                throw new IllegalArgumentException("搞啥呀!");
            }
            int idx=0;
            InputStream in=new BufferedInputStream(new FileInputStream(file));
            OutputStream out=new BufferedOutputStream(new FileOutputStream(file+"."+idx++));
            int b;
            int count=0;
            while((b=in.read())!=-1) {
                out.write(b);
                count++;
                if(count%(size*1024)==0) {
                    out.close();
                    out=new BufferedOutputStream(new FileOutputStream(file+"."+idx++));
                }
            }
            in.close();
            out.close();
        }catch(IOException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
    public static void join(String file) {
        try {
            String filename=file.substring(0,file.lastIndexOf("."));
            String num=file.substring(file.lastIndexOf(".")+1);
            int idx=Integer.parseInt(num);
            OutputStream out=new FileOutputStream(filename);
            File f=new File(filename+"."+idx++);
            while(f.exists()) {
                InputStream in=new FileInputStream(f);
                cp(in,out);
                in.close();
                f=new File(filename+"."+idx++);
            }
            out.close();
        }catch(IOException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
    public static void cp(InputStream in,OutputStream out) throws IOException{
        byte[] buf=new byte[1024*512];
        int count;
        while((count=in.read(buf))!=-1) {
            out.write(buf,0,count);
        }
        out.flush();
    }
}

测试截图:

原文地址:https://www.cnblogs.com/Lizhichengweidashen/p/13428825.html