zoukankan      html  css  js  c++  java
  • Java日志第44天 2020.8.18

    综合实例

    本案例主要写一个工具类,该工具类主要实现读写文件和复制文件功能。

    import com.sun.xml.internal.bind.v2.model.runtime.RuntimeReferencePropertyInfo;
    
    import java.io.*;
    
    public class IOUtils {
        //IO的工具类
        public static void print(byte[] ary) {
            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 len;
                while((len = in.read(buf)) != -1) {
                    out.write(buf, 0, len);
                }
                in.close();
                out.close();
            } catch (IOException e){
                e.printStackTrace();
                throw new RuntimeException(e);
            }
        }
    
        public static void cp1(File from, File to) {
            try {
                InputStream in = new FileInputStream(from);
                OutputStream out = new FileOutputStream(to);
                int len;
                while((len = in.read()) != -1) {
                    out.write(len);
                }
                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 len;
                int i = 1;
                while((len = in.read()) != -1) {
                    if(len <= 0xf)
                        System.out.print("0");
                    System.out.print(Integer.toHexString(len)+" ");
                    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));
        }
    
        /*
            将文件切分为指定大小的系列文件
            文件大小以k为单位
         */
        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++));
                }
            } 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();
            }
        }
        
        //复制文件,复制in到out,不关闭流
        public static void cp(InputStream in,OutputStream out) throws IOException {
            byte[] buf = new byte[1024*512];//512K缓冲
            int count;
            while((count = in.read(buf)) != -1) {
                out.write(buf,0,count);
            }
            out.flush();
        }
    }
  • 相关阅读:
    Rust 变量
    Rust-lang(hello world 续)
    Rust-lang(hello world)
    Java 1.8 ASM ClassReader failed to parse class file
    Sqoop使用笔记
    Jstorm
    从flume到kafka,日志收集
    vim-3-插件管理
    vim-2-使用进阶
    Git-Repo-Gerrit-1-Git介绍,安装和配置
  • 原文地址:https://www.cnblogs.com/Gazikel/p/13526331.html
Copyright © 2011-2022 走看看