zoukankan      html  css  js  c++  java
  • 分享下通过java 读取目录及子目录下指定文件名的路径 并放到一个List数组里面返回遍历和写到文件里(同时将不会出现覆盖问题和重复读入问题)

    import java.io.*;

    import java.util.Scanner;

    public class ListFiles01
    {
    private static String listFileStr;
    static int ch;
    static Scanner sc = new Scanner(System.in);

    public static void main(String[] args)
    {
    Delete();//调用方法
    //删除操作,目的是防止重复录入和检查文件是否存在
    System.out.print("开始录入: ");
    System.out.println("————————");
    try
    {
    File file = new File(args[1]);
    //在命令行参数中输入文件名
    FileWriter fw = new FileWriter(file);
    //实例化一个FileWriter变量
    ListFiles01 lf = new ListFiles01();
    lf.listFile(args[0]);
    //将地址名传入,并且调用方法

    //在命令行参数中输入地址
    fw.write(listFileStr);
    fw.close();

    } catch (ArrayIndexOutOfBoundsException e)
    {
    // 参数提示
    System.out.println("No 'source dir' or 'target file' ");
    //如果在命令行参数中没有写入两个名称,即地址和文件名
    //不存在地址或者文件名
    } catch (IOException e)
    {
    System.out.println("IO error! " + e.toString());
    }
    }

    private static void Delete()//静态方法
    {
    File file = new File("Output.doc");//文件名称
    if (file.exists())
    {
    System.out.println("该文件存在");
    file.delete();//删除操作
    } else
    {
    System.out.println("该文件不存在,新建...");
    try
    {
    file.createNewFile();//文件新建操作
    } catch (IOException e)
    {
    e.printStackTrace();
    }
    }
    }

    private int i;

    public void listFile(String str) throws IOException//含有String形参
    {
    File file = new File(str);
    File list[] = file.listFiles();
    for (i = 0; i < list.length; i++)//循环,重复读入
    {
    if (list[i].isDirectory())// 判断是否为文件夹
    {
    // System.out.println(list[i]
    // .getPath()); // 输出文件夹名称
    // listFile(list[i].getPath());
    //继续向该文件夹目录下面深入
    //并且new一个新的对象、调用方法、继续判断
    new ListFiles01().listFile(list[i].toString());// 递归
    } else
    {
    listFileStr = list[i].getAbsolutePath() + " ";//隔行
    System.out.println(list[i].getAbsolutePath());//输出文件名称
    byte[] buffer = listFileStr.getBytes();
    //通过字节数组来将控制台中写入的数据再次读入文件夹中
    if (buffer != null)
    {
    FileOutputStream outputStream = new FileOutputStream(
    "Output.doc", true);
    //定义FileOutputStream对象时增加了一个参数true
    //用于一行一行写入,防止覆盖上一行的内容
    outputStream.write(buffer);
    outputStream.close();
    }
    }
    }
    }
    }

    /*以上为从命令行读入,还有就是下方的从控制台输入,相比而言,控制台输入更加方便*/

    import java.io.*;
    import java.util.Scanner;

    public class ListFiles02
    {
    private static final String list = null;
    private static String str = null;
    private static String listFileStr;
    static int ch;
    static Scanner sc = new Scanner(System.in);

    public static void main(String[] args)
    {
    Delete();
    System.out.println("输入你选择的地址: ");
    System.out.print("——————");
    try
    {
    FileWriter fw = new FileWriter("outputstream.doc", true);
    ListFiles02 lf = new ListFiles02();
    // 输入路径
    Scanner sc = new Scanner(System.in);
    str = sc.nextLine();
    lf.listFile(str);
    fw.write(listFileStr);
    fw.close();

    } catch (ArrayIndexOutOfBoundsException e)
    {
    // 参数提示
    System.out.println("No 'source dir' or 'target file' ");

    } catch (IOException e)
    {
    System.out.println("IO error! " + e.toString());
    }
    }

    private static void Delete()
    {
    File file = new File("outputstream.doc");
    if (file.exists())
    {
    System.out.println("该文件存在");
    file.delete();
    } else
    {
    System.out.println("该文件不存在,新建...");
    try
    {
    file.createNewFile();
    } catch (IOException e)
    {
    e.printStackTrace();
    }
    }
    }

    private int i;

    public void listFile(String str) throws IOException
    {
    File file = new File(str);
    File list[] = file.listFiles();
    for (i = 0; i < list.length; i++)
    {

    if (list[i].isDirectory())
    {
    // // 判断是否为文件夹
    // System.out.println(list[i]
    // .getPath()); // 输出文件夹名称
    // listFile(list[i].getPath());
    new ListFiles02().listFile(list[i].toString());// 递归
    } else
    {
    listFileStr = list[i].getAbsolutePath() + " ";
    System.out.println(list[i].getAbsolutePath());
    byte[] buffer = listFileStr.getBytes();
    if (buffer != null)
    {
    FileOutputStream outputStream = new FileOutputStream(
    "outputstream.doc", true);
    outputStream.write(buffer);
    outputStream.close();
    }
    }
    }
    }
    }

  • 相关阅读:
    codeforces round #234B(DIV2) B Inna and New Matrix of Candies
    关于禁止ipad的home键解决方法
    ios cocos2d 画线出现闪烁问题
    ios 关于[xxx timeIntervalSinceNow]出现EXC_BAD_ACCESS错误的解决办法
    Codeforces Round #228 (Div. 2) B. Fox and Cross
    Codeforces Round #228 (Div. 2) A. Fox and Number Game
    c语言 %p
    xcode 编译opencv ios容易出现的错误
    ios编译ASIHTTPRequest时出现 'libxml/HTMLparser.h' file not found in ASIHTTPRequest
    当编译CCBReader时出现 “ CCBAnimationManager.m Use of undeclared identifier 'other‘ ” 解决方法
  • 原文地址:https://www.cnblogs.com/ghostTao/p/3660194.html
Copyright © 2011-2022 走看看