• I/O 流


    输入流的几个常用方法:

    1,复制一个文件;

    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    
    public class copyDeno {
    
        public static void copy(String src, String dest) {//src 原文件,dest 待复制的文件
    //这儿需要加下判断src是否为文件和是否存在, InputStream in
    = null; OutputStream out = null; byte[] b = new byte[1024]; int len; try { in = new FileInputStream(src); out = new FileOutputStream(dest); while ((len=in.read(b) )!= -1) { out.write(b,0,len); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if (in != null) { try { in.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if (out != null) { try { out.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } public static void copyWithBuffer(String src, String dest) {//以上加入缓冲流 InputStream in = null; OutputStream out = null; byte[] b = new byte[20]; int len; try { in = new BufferedInputStream(new FileInputStream(src)); out =new BufferedOutputStream(new FileOutputStream(dest)); while ((len=in.read(b) )!= -1) { out.write(b,0,len); } //out.flush(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { Release.free(in, out); } } public static void main(String[] args) throws IOException { copy("F:\Word\eclipseword\a4\file\a.txt", "F:\Word\eclipseword\a4\copyfile\a1.txt"); copyWithBuffer("F:\Word\eclipseword\a4\file\b.txt", "F:\Word\eclipseword\a4\copyfile\b1.txt"); } }

    封装一个关闭流(释放资源)方法:

    package IO;
    
    import java.io.Closeable;
    import java.io.IOException;
    public class Release {
     public static void free(Closeable...stream){
    	 for(Closeable st:stream){
    		 if(st != null){
    			 try {
    				st.close();
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		 }
    	 }
    	
     }
    }
    

      2,复制一个文件夹的所有内容到另外一个文件夹中

    
    

    package IOfuxi;

    
    

    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;

    
    

    import IO.Release;

    
    

    /*复制多级文件夹
    * A:封装数据源File
    * B:封装目的地File
    * C:判断该File是文件夹还是文件
    * a:是文件夹
    * 就在目的地目录下创建该文件夹
    * 获取该File对象下的所有文件或者文件夹File对象
    * 遍历得到每一个File对象
    * 回到C
    * b:是文件
    * 就复制(字节流)
    * */
    public class CopyFolderduo {

    
    

    public static void main(String[] args) throws IOException {
    copyfolder("F:\Word\eclipseword\a4\file",
    "D:\Java视频\day21\day21");

    }

    private static void copyfolder(String src,String des) throws IOException{
    File file=new File(src);
    File newfile=new File(des);
    //判断文件是否存在
    if(!file.exists()||!newfile.exists()){
    return;
    }else{
    fuzhi(file,newfile);
    }

    }

    
    

    private static void fuzhi(File file, File newfile) throws IOException {

    // 判断该File是文件夹还是文件
    if(file.isDirectory()){
    File newFloder=new File(newfile,file.getName());
    //创建目标路径文件夹
    newFloder.mkdir();
    //// 获取该File对象下的所有文件或者文件夹File对象
    File[] arrfile=file.listFiles();
    for(File f:arrfile){
    //递归调用
    fuzhi(f,newFloder);
    }

    }else{
    File newf=new File(newfile,file.getName());
    copyfile(file,newf);

    }

    }

    
    


    //复制文件的方法
    private static void copyfile(File file, File newf) throws IOException {
    BufferedInputStream in= new BufferedInputStream(new FileInputStream(file));
    BufferedOutputStream out=new BufferedOutputStream(new FileOutputStream(newf));
    byte[] arr=new byte[1024];
    int len;
    while((len=in.read(arr))!=-1){
    out.write(arr, 0, len);
    out.flush();
    }
    // out.flush();
    Release.free(in,out);
    }

    
    

    }

     

     3.压缩一个文件夹

     1 package zy823;
     2 
     3 import java.io.BufferedInputStream;
     4 import java.io.BufferedOutputStream;
     5 import java.io.File;
     6 import java.io.FileInputStream;
     7 import java.io.FileNotFoundException;
     8 import java.io.FileOutputStream;
     9 import java.io.InputStream;
    10 import java.util.zip.ZipEntry;
    11 import java.util.zip.ZipOutputStream;
    12 
    13 public class zipFolder {
    14      public static void zipFile(String src,String dest){
    15             ZipOutputStream zos = null;
    16             try {
    17                 zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(dest)));//
    18                 File fileSrc = new File(src);
    19               if(!fileSrc.exists()){
    20                throw new FileNotFoundException();
    21               }else{
    22                 zip(fileSrc.getName(),zos,fileSrc);
    23                   zos.flush();
    24                   zos.close();
    25               }
    26             } catch (FileNotFoundException e1) {
    27             // TODO Auto-generated catch block
    28               e1.printStackTrace();
    29             }catch (Exception e) {
    30               // TODO Auto-generated catch block
    31              e.printStackTrace();
    32             }
    33             
    34           }
    35           private static void zip(String dest,ZipOutputStream zos,File src)throws Exception{
    36             byte[] b = new byte[1024];
    37             InputStream is = null;
    38             if(src.isFile()){
    39                 zos.putNextEntry(new ZipEntry(dest));
    40               is = new BufferedInputStream(new FileInputStream(src));
    41               int len;
    42               while((len = is.read(b)) != -1){
    43                 zos.write(b, 0, len);
    44               }
    45               zos.flush();
    46               is.close();
    47               zos.closeEntry();
    48             }else{
    49                  File[] files = src.listFiles();
    50                zos.putNextEntry(new ZipEntry(dest+"/")); 
    51                for(File temp:files){
    52                  zip(dest+"/"+temp.getName(),zos,temp);
    53                }
    54             }
    55           }
    56 
    57 }
  • 相关阅读:
    获得最小的topK
    阿里凑单算法
    排序指标 --- 1、平均准确率均值 (Mean Average Precision-MAP) & 2、NDCG (normalized discounted CG-cumulative gain,累计增益)
    deepwalk算法
    tmp-动态规划-迷宫走法
    分治法-合并K个有序链表
    如何在创建hive表格的python代码中导入外部文件
    如何删除hive表格的分区
    pytorch中torch.nn构建神经网络的不同层的含义
    pytorch中如何使用预训练词向量
  • 原文地址:https://www.cnblogs.com/ysg520/p/9515293.html
Copyright © 2020-2023  润新知