美文网首页
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