• I/O流之FileWriter【获取当前目录下所有子文件的绝对路径】


     

    需求:

    1、编写程序,在main方法中,在当前目录下(项目目录)创建一个新目录newDir;

    2、获取当前目录(项目目录)中所有文件列表信息,把这些信息写到目录newDir中的info.txt文件中


    方法1:使用ArrayList<String>存储当前目录下所有文件的绝对路径

    package 课后练习;
    
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.ArrayList;
    
    import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ;
    
    public class FileDemo {
        public static void main(String[] args) {
            FileDemo fileDemo = new FileDemo();
            // 创建数组链表存储文件路径
            ArrayList<String> info = new ArrayList<String>();
            BufferedWriter bw = null;
            
            try {
                // 创建newDir
                File file = new File("newDir");
                file.mkdir(); 
                
                // 在newDir下创建文件info.txt
                File newFile = new File("newDir/info.txt");
                newFile.createNewFile();
                
                // 获取当前目录
                File currentDir = new File("E:\04_北京惠科培训\JavaSECode\7月\Me\day16");
                
                // 创建文件输出流对象
                bw = new BufferedWriter(new FileWriter(newFile));
                ArrayList<String> fileInfo = fileDemo.getFileInfo(currentDir, info);
                
                // 将数组链表中的数据写入Info.txt文件
                for (String s : fileInfo) {
                    bw.write(s+"
    ");
                }
                
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (bw != null) {
                    try {
                        bw.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
        
        /**功能: 获取当前目录(项目目录)中所有文件列表信息
         * @param file 当前目录
         * @param str 存储文件的绝对路径
         * @return 返回所有当前目录下的文件路径
         */
        public ArrayList<String> getFileInfo(File file, ArrayList<String> str) {
            // 获取当前目录下的文件
            File[] listFiles = file.listFiles();
            // 如果文件链表为空或长度为0,则代表该文件没有子文件
            if (listFiles == null || listFiles.length == 0) {
                return null;
            }
            // 否则遍历该文件夹下的子文件
            for (File f : listFiles) {
                if (f.isDirectory()) {
                    getFileInfo(f, str);
                } else {
                    str.add(f.getAbsolutePath());
                }
            }
            return str;
        }
    
    }

     方法2:使用StringBuilder存储当前目录下所有文件的绝对路径

    package 课后练习;
    
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.ArrayList;
    
    import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ;
    
    public class FileDemo {
        public static void main(String[] args) {
            FileDemo fileDemo = new FileDemo();
            // 创建StringBuilder存储文件路径
            StringBuilder sb = new StringBuilder();
            BufferedWriter bw = null;
            
            try {
                // 创建newDir
                File file = new File("newDir");
                file.mkdir(); 
                
                // 在newDir下创建文件info.txt
                File newFile = new File("newDir/info.txt");
                newFile.createNewFile();
                
                // 获取当前目录
                File currentDir = new File("E:\04_北京惠科培训\JavaSECode\7月\Me\day16");
                
                // 创建文件输出流对象
                bw = new BufferedWriter(new FileWriter(newFile));
                
                StringBuilder fileInfo = fileDemo.getFileInfo(currentDir, sb);
                String str = sb.toString();
                bw.write(str);
        
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (bw != null) {
                    try {
                        bw.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
        
        /**功能: 获取当前目录(项目目录)中所有文件列表信息
         * @param file 当前目录
         * @param str 存储文件的绝对路径
         * @return 返回所有当前目录下的文件路径
         */public StringBuilder getFileInfo(File file, StringBuilder str) {
            // 获取当前目录下的文件
            File[] listFiles = file.listFiles();
            // 如果文件链表为空或长度为0,则代表该文件没有子文件
            if (listFiles == null || listFiles.length == 0) {
                return null;
            }
            // 否则遍历该文件夹下的子文件
            for (File f : listFiles) {
                if (f.isDirectory()) {
                    getFileInfo(f, str);
                } else {
                    str.append(f.getAbsolutePath()+"
    ");
                }
            }
            return str;
        }
    
    }

    运行结果:

  • 相关阅读:
    实验二、作业调度模拟实验
    实验一
    0909 初识操作系统
    实验四、主存空间的分配和回收模拟
    12.27评论5位同学试验三
    实验三进程调度模拟程序
    实验二、作业调度模拟实验
    实验一报告
    实验四 主存空间的分配和回收模拟
    实验三 进程调度模拟程序
  • 原文地址:https://www.cnblogs.com/snow1234/p/7203240.html
Copyright © 2020-2023  润新知