美文网首页
Java IO实践

Java IO实践

作者: 萌妈码码 | 来源:发表于2018-08-26 14:11 被阅读0次

(一) 在电脑D盘下创建一个文件为HelloWorld.txt文件,判断他是文件还是目录,在创建一个目录IOTest,之后将HelloWorld.txt移动到IOTest目录下去;之后遍历IOTest这个目录下的文件.

public class Ex1 {
    public static void main(String[] args) {
        File hw = new File("U:", "HelloWorld.txt");
        //文件创建用createNewFile()方法, 成功返回true
        try {
            boolean success = hw.createNewFile();
            if(success) {
                System.out.println("文件创建成功");
            } else {
                System.out.println("文件创建失败");
            }
        } catch (IOException e) {
            System.out.println("文件创建失败");
        }

        if(hw.isFile()) {
            System.out.println("It's a File.");
        }
        if(hw.isDirectory()) {
            System.out.println("It's a Directory.");
        }

        //创建目录mkdir
        File dir = new File("U:/IOTest");
        //如果路径中有其他目录不存在,则创建
        dir.mkdirs();

        //文件移动renameTo
        if(hw.renameTo(new File(dir.getPath(), hw.getName()))) {
            System.out.println("文件移动成功");
        } else {
            System.out.println("文件移动失败");
        }

        //遍历文件调用list
        for(String c : dir.list()) {
            System.out.println(c);
        }
    }
}

注意: new File()并不会创建任何文件或目录,而只是创建一个抽象对象,真的在文件系统中创建文件或者目录需要调用相应的方法,createNewFile()或者mkdir(), mkdirs()。均返回boolean,代表创建成功与否。

(二) 递归实现输入任意目录,列出文件以及文件夹

public class Ex2 {
    private static void list(File file, String leadingSpaces) {
        if(file.isFile()) {
            System.out.println(leadingSpaces + file.getName());
            return;
        }
        if(file.isDirectory()) {
            System.out.println(leadingSpaces + file.getName());
            for(File sf : file.listFiles()) {
                list(sf, leadingSpaces + "   ");
            }
        }
    }

    public static void main(String[] args) {
        File file = new File("U:/KenView");
        list(file, "");
    }
}

注意:list() vs. listFiles()
list() 返回子文件和目录的名字数据
listFiles() 返回子文件数组

(三) 递归实现列出当前工程下所有.java文件

public class Ex3 {
    public static void listJavaFiles(File file) {
        if(file.exists()) {
            if(file.isFile() && file.getName().toLowerCase().endsWith(".java")) {
                System.out.println(file.getPath());
                return;
            }
            if(file.isDirectory()) {
                for(File f : file.listFiles()) {
                    listJavaFiles(f);
                }
            }
        }
    }

    public static void main(String[] args) {
        listJavaFiles(new File(".."));
    }
}

注意:学会使用相对路径

//得到当前路径
 listFiles(new File("."));
//得到上一级目录
listFiles(new File(".."));

(四)查看D盘中所有的文件和文件夹名称,并且使用名称升序降序,文件夹在前和文件夹在
后,文件大小排序等。


public class Ex4 {
    private static List<File> list(File file) {
        List<File> list = new ArrayList();
        if(file.exists()) {
            if(file.isFile()) {
                list.add(file);
            }
            if(file.isDirectory()) {
                for(File f : file.listFiles()) {
                    list.addAll(list(f));
                }
            }
        }
        return list;
    }

    public static void main(String[] args) {
        List<File> list = list(new File("U:/KenView"));
        //文件名称排序
        list.sort((f1, f2) -> f1.getPath().compareTo(f2.getPath()));
        list.stream().forEach(f -> System.out.println(f.getPath()));

        //文件大小排序
        list.sort((f1, f2) -> (int) (f1.length() - f2.length()));
        list.stream().forEach(f -> {
            System.out.printf("%5d  %s", f.length(), f.getPath());
            System.out.println();
        });
    }
}

注意:file.length()得到文件大小

/**
     * Returns the length of the file denoted by this abstract pathname.
     * The return value is unspecified if this pathname denotes a directory.
**/

(五) 在程序中写一个"HelloJavaWorld你好世界"输出到操作系统文件Hello.txt文件中

    private static void inOut(String s, File outFile) {
        BufferedReader reader = null;
        BufferedWriter writer = null;
        try {
            if(!outFile.exists()) {
                outFile.createNewFile();
            }
            reader = new BufferedReader(new StringReader(s));
            writer = new BufferedWriter(new FileWriter(outFile));
           
            String line;
            while((line = reader.readLine()) != null) {
                writer.write(line);
                writer.newLine();
            }
            writer.flush();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (writer != null) {
                    writer.close();
                }
            } catch (IOException e) {
            }
        }
    }

注意:write()之后记得flush()
文件写完记得关闭

相关文章

网友评论

      本文标题:Java IO实践

      本文链接:https://www.haomeiwen.com/subject/gckoiftx.html