• I/O流


    1、使用Files. walkFileTree()找出指定文件夹下所有大于指定大小(比如1M)的文件。

    import java.io.File;
    
    public class 文件大小 {
        static long sum=0;
    public static void main(String[] args) {
        File c=new File("E:\2019秋季学期\java\05.StreamAndFileSourceCode");
        length1(c);
        System.out.println("文件大小为"+sum);
    }
    
            public static void length1(File c) {
            File r[]=c.listFiles();
            
            for(int i=0;i<r.length;i++)
            {
                if(r[i].isFile())
                {
                    sum=sum+r[i].length();
                }
                if(r[i].isDirectory())
                {
                    length1(r[i]);
                }
            }
        }
    }

    运行结果

    2、使用Files. walkFileTree()找出指定文件夹下所有扩展名为.txt和.java的文件。

    源代码

    import java.io.IOException;
    import java.nio.file.FileVisitResult;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.nio.file.SimpleFileVisitor;
    import java.nio.file.attribute.BasicFileAttributes;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * 使用的是JDK 1.7,Files.walkFileTree会是一个很好的选择。
     * 这个类位于java.nio.file包下,这个包是JDK 1.7中新增的。
     *
     */
    public class walkFileTree{
    
        public static void main(String[] args) throws IOException {
            Path startingDir = Paths.get("E:\2019秋季学期\java\05.StreamAndFileSourceCode");
    
            FilterFilesVisitor  filterFilesVisitor= new FilterFilesVisitor(".java");
            FilterFilesVisitor  filterFilesVisitor1= new FilterFilesVisitor(".txt");
            Files.walkFileTree(startingDir, filterFilesVisitor);
            Files.walkFileTree(startingDir, filterFilesVisitor1);
            for (String name : filterFilesVisitor.getFilenameList()) {
                System.out.println(name);
            }
            for (String name : filterFilesVisitor1.getFilenameList()) {
                System.out.println(name);
            }
        }
    }
    
    class FilterFilesVisitor extends SimpleFileVisitor<Path> {
    
        private List<String> filenameList = new ArrayList<String>();
        private String fileSuffix = null;
    
        public FilterFilesVisitor(String fileSuffix){
            this.fileSuffix = fileSuffix;
        }  
    
        public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {  
            if (file.toString().endsWith(fileSuffix)) {  
                filenameList.add(file.toString());  
            }  
            return FileVisitResult.CONTINUE;  
        }  
    
        public List<String> getFilenameList() {  
            return filenameList;  
        }  
    
        public void setFilenameList(List<String> filenameList) {  
            this.filenameList = filenameList;  
        }  
    }

    运行结果

     3、使用Files. walkFileTree()找出指定文件夹下所有包容指定字符串的txt文件。

      源代码

    import java.io.IOException;
    import java.nio.file.FileVisitResult;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.nio.file.SimpleFileVisitor;
    import java.nio.file.attribute.BasicFileAttributes;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * 使用的是JDK 1.7,Files.walkFileTree会是一个很好的选择。
     * 这个类位于java.nio.file包下,这个包是JDK 1.7中新增的。
     *
     */
    public class walkFileTree{
    
        public static void main(String[] args) throws IOException {
            Path startingDir = Paths.get("E:\2019秋季学期\java\05.StreamAndFileSourceCode");
    
            FilterFilesVisitor  filterFilesVisitor= new FilterFilesVisitor(".java");
          //  FilterFilesVisitor  filterFilesVisitor1= new FilterFilesVisitor(".txt");
            Files.walkFileTree(startingDir, filterFilesVisitor);
        //    Files.walkFileTree(startingDir, filterFilesVisitor1);
            for (String name : filterFilesVisitor.getFilenameList()) {
                System.out.println(name);
            }
    //        for (String name : filterFilesVisitor1.getFilenameList()) {
    //            System.out.println(name);
    //        }
        }
    }
    
    class FilterFilesVisitor extends SimpleFileVisitor<Path> {
    
        private List<String> filenameList = new ArrayList<String>();
        private String fileSuffix = null;
    
        public FilterFilesVisitor(String fileSuffix){
            this.fileSuffix = fileSuffix;
        }  
    
        public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {  
            if (file.toString().contains(fileSuffix)) {  
                filenameList.add(file.toString());  
            }  
            return FileVisitResult.CONTINUE;  
        }  
    
        public List<String> getFilenameList() {  
            return filenameList;  
        }  
    
        public void setFilenameList(List<String> filenameList) {  
            this.filenameList = filenameList;  
        }  
    }

    运行结果

     4、编写一个程序,指定一个文件夹,能自动计算出其总容量;

    源代码

    import java.io.File;
    
    public class 文件大小 {
        static long sum=0;
    public static void main(String[] args) {
        File c=new File("E:\2019秋季学期\java\05.StreamAndFileSourceCode");
        length1(c);
        System.out.println("文件大小为"+sum);
    }
    
            public static void length1(File c) {
            File r[]=c.listFiles();
            
            for(int i=0;i<r.length;i++)
            {
                if(r[i].isFile()) {
    //            if(r[i].length()>(1024*1024))
                    sum=sum+r[i].length();
    //                System.out.println(r[i].getName()+"文件大小为"+r[i].length());
                }
                if(r[i].isDirectory())
                {
                    length1(r[i]);
                }
            }
        }
    }

      运行结果

    5、编写一个文件加解密程序,通过命令行完成加解密工作;

    源代码

    import java.io.File;
    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 文件加密 {
    public static void main(String[] args) {
        File start=new File("E:\2019秋季学期\java\05.StreamAndFileSourceCode\start.txt");
        File guocheng=new File("E:\2019秋季学期\java\05.StreamAndFileSourceCode\guocheng.txt");
        File end=new File("E:\2019秋季学期\java\05.StreamAndFileSourceCode\end.txt");
        try {
            jiami(start,guocheng);
        } catch (IOException e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        }
        try {
            jiemi(guocheng,end);
        } catch (IOException e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        }
    }
    public static void jiami(File start,File guocheng) throws IOException
    {    if(!start.exists())
            {    System.out.println("文件不存在");
            }
        if(!guocheng.exists())
        {
            System.out.println("加密文件不存在");
            guocheng.createNewFile();
            
        }
        InputStream c=new FileInputStream(start);
        OutputStream b=new  FileOutputStream(guocheng);
        int a=0;
        while((a=c.read())>-1)
        {
            b.write(a^98);
            
        }
        c.close();
        b.flush();
        b.close();
    }
    public static void jiemi(File guocheng,File end) throws IOException
    {
        if(!guocheng.exists())
        {    System.out.println("end is not");
            }
    
    if(!end.exists())
    {System.out.println("end is not");
        }
    InputStream c=new FileInputStream(guocheng);
    OutputStream b=new  FileOutputStream(end);
    int a=0;
    while((a=c.read())>-1)
    {
        b.write(a^0x98);
        
    }
    c.close();
    b.flush();
    b.close();
    
        }
    }

    运行结果

     

     

    6、编写一个文件分割工具,能把一个大文件分割成多个小的文件。并且能再次把它们合并起来得到完整的文件。

    源代码

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    public class 文件分割和合并 {
        public static void main(String[] args) {
            //声明:!!partitionFile(原大文件,切割后存放的小文件的路径,切割规定的行数)
          cut("E:\2019秋季学期\java\abc.txt", "E:\2019秋季学期\java\1",3000);
        }
    
        private static void cut(String src, String endsrc, int num) {
            FileInputStream fis = null;
            File file = null;
            int name=1;
            try {
                InputStreamReader reader = new InputStreamReader(  new FileInputStream(src),"GBK"); 
                BufferedReader br = new BufferedReader(reader);//读取文件内的内容 
                String str=br.readLine();
                file =new File(src);
                while (str != null) {
                    
                    //分别找到原大文件的文件名和文件类型,为下面的小文件命名做准备
                    String name2 = file.getName();
                    int lastIndexOf = name2.lastIndexOf(".");
                    String substring = name2.substring(0, lastIndexOf);
                    String substring2 = name2.substring(lastIndexOf, name2.length());
                    FileWriter write = new FileWriter(endsrc + "\\"+ substring + "-" + name + substring2);
                    BufferedWriter out=new BufferedWriter(write);
                    for(int k=0;k<num;k++) {
                        out.write(str);
                        str=br.readLine();
                        if(str == null) {
                            break;
                        }
                    }
                    //结束资源
                    out.close();
                    name++;
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (fis != null) {
                        //结束资源
                        fis.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    运行结果

  • 相关阅读:
    复习时间
    核反应堆
    假期编程
    剪花布条
    Atcoder Regular Contest 072 C Alice in linear land(思维题)
    xss攻击入门
    转发 DDoS攻防战 (一) : 概述
    XSS跨站脚本攻击
    sql注入
    关于阿里云图片识别接口的demo
  • 原文地址:https://www.cnblogs.com/guziteng1/p/11821152.html
Copyright © 2020-2023  润新知