一、今日学习的内容:
今日学习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(); } }
测试截图: