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+"\n"); } } 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()+"\n"); } } return str; } }
运行结果: