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();
            }
        }
    }
}

运行结果

 

posted @ 2019-11-08 16:26  恶霸xx  阅读(160)  评论(0编辑  收藏  举报