0

帮我找出这个........如何使用带有索引的核心java概念获取文件列表?例如,一个文件夹可能包含文件和子文件夹以及文件。现在输出应该是..

- - 输出 - -

输入路径:e:/gk/demo

1.work

  1.1 examples

        1.1.1 math.java
        1.1.2 math.class
        !!
        !!

        !!
  1.2 practice

        1.2.1 .....extensions.
1.2.6.3 means 1st folder and 2nd subfolder in the main folder 1and 6th is the subfolder of 2nd sub folder and so on......

文件夹的树形表示

1(主文件夹)

 |------->2(sub folder)
      |
      |-------->6(sub folder of 2)
                  |
                  |------------>3
n.1 

        n.1 file1
        n.2 subfolder..
        n.2.1 file1.
        n.2.2 file2.

\\菜单:////

  1. 复制(已经提到通过获取索引来复制文件)

  2. 删除(已经提到通过获取索引来删除文件)

  3. 重命名(通过使用索引重命名文件已经提到)

  4. 出口。

我尝试过的代码是..重命名索引..是..

导入java.io.File;

导入java.io.*;

导入 java.util.*;

导入java.lang.String;

公共类重命名索引

{

public void renameIndex(HashMap<String, String> hash)

{

    try

    {
        BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));

        System.out.print("Please enter the index to be renamed : ");

        String old_name = buffer.readLine();

/ * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * *** / 字符串索引[]=old_name.split("\.");

        for(int i=0;i<index.length;i++)
        {
            Object object = hash.get(index[i]);
            String string = (String)object;
            File oldfile = new File(string);

            System.out.println(index[i]+"\n"+oldfile.getName());
            System.out.println("index length is:"+index.length);

/ * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * *** /

            if(!oldfile.exists())
            {
                System.out.println("File or directory does not exist.");
            }
            else
            {
                /*********************************************************/
                if(i<index.length)
                {
                    if(oldfile.isFile())
                    {
                        String path = oldfile.getParent();
                        System.out.print("please enter the new file or directory name : ");
                        String name = buffer.readLine();
                        String newname = path + "/" + name;
                        File newfile = new File(newname);
                        System.out.println("Old File or directory name : " + oldfile);
                        System.out.println("New File or directory name : " + newfile);
                        boolean Rename = oldfile.renameTo(newfile);

                        if(!Rename)
                        {
                            System.out.println("File or directory does not rename successfully.");
                        }
                        else
                        {
                            System.out.println("File or directory rename is successfully.");
                        }

                        System.out.println("This is file");
                    }
                    else if(oldfile.isDirectory())
                    {
                        if(i+1==index.length)
                        {
                            String path = oldfile.getParent();
                            System.out.print("please enter the new file or directory name : ");
                            String name = buffer.readLine();
                            String newname = path + "/" + name;
                            File newfile = new File(newname);
                            System.out.println("Old File or directory name : " + oldfile);
                            System.out.println("New File or directory name : " + newfile);
                            boolean Rename = oldfile.renameTo(newfile);

                            if(!Rename)
                            {   
                                System.out.println("File or directory does not rename successfully.");
                            }
                            else
                            {
                            System.out.println("File or directory rename is successfully.");

                            }
                        }

/ * ** * ** * ** * ****子目录和文件* ** * ** * ** * / else { System.out.println("这是一个子目录"); } / * ** * ** * ** * ****子目录和文件* ** * ** * ** */ } else { System.out.println("拒绝访问"); } }

            /*********************************************************/

            }
        }//for ending
    }

    catch(NullPointerException e)
    {
        System.out.println("No file name is existed"+e);
    }

    catch(IOException ioe)
    {
        System.out.println("No file name is existed"+ioe);
    }
}

}

4

1 回答 1

0

我认为这将是一个简单的答案,但它花费的时间比我想象的要长。

下面的代码是用 Java Processing 编写的,所以首先是构造函数,然后是 void setup(),然后就是这样!

ArrayList directoryListing = new ArrayList();

void crawler( String indexer, String path) {
  File[] listFiles = new File(path).listFiles(); 
  for (int i = 0; i < listFiles.length; i++) {
    directoryListing.add(indexer+""+i+".\t"+listFiles[i].getAbsoluteFile().toString());
  }
}

void setup() {
  crawler("", "C:/Temp/MKV Extract");
  int j=0;
  while (j < directoryListing.size ()) {      
    String[] list = split(directoryListing.get(j++).toString(), "\t");
    if (new File(list[1]).isDirectory()) {
      crawler(list[0], list[1]);
    }
  }

  for (int i = 0; i < directoryListing.size(); i++) {
    println(directoryListing.get(i).toString());
  }
  exit();
}

结果是:

0.  C:\Temp\MKV Extract\!!ReadMeFirst!!.txt
1.  C:\Temp\MKV Extract\base64tool.exe
2.  C:\Temp\MKV Extract\cmd.bat
3.  C:\Temp\MKV Extract\cygz.dll
4.  C:\Temp\MKV Extract\doc
5.  C:\Temp\MKV Extract\examples
6.  C:\Temp\MKV Extract\extract.bat
7.  C:\Temp\MKV Extract\Formats.txt
8.  C:\Temp\MKV Extract\libcharset.dll
9.  C:\Temp\MKV Extract\libebml.dll
10. C:\Temp\MKV Extract\libiconv.dll
11. C:\Temp\MKV Extract\libmatroska.dll
12. C:\Temp\MKV Extract\matroskalogo_big.ico
13. C:\Temp\MKV Extract\MKVextGUI.cfg
14. C:\Temp\MKV Extract\mkvextract.exe
15. C:\Temp\MKV Extract\MKVextractGUI.exe
16. C:\Temp\MKV Extract\mkvinfo.exe
17. C:\Temp\MKV Extract\mkvmerge.exe
18. C:\Temp\MKV Extract\mkxuncat.exe
19. C:\Temp\MKV Extract\mmg.exe
20. C:\Temp\MKV Extract\wxbase253u_gcc_custom.dll
21. C:\Temp\MKV Extract\wxmsw253u_core_gcc_custom.dll
22. C:\Temp\MKV Extract\wxmsw253u_html_gcc_custom.dll
4.0.    C:\Temp\MKV Extract\doc\base64tool.html
4.1.    C:\Temp\MKV Extract\doc\ChangeLog.txt
4.2.    C:\Temp\MKV Extract\doc\COPYING.txt
4.3.    C:\Temp\MKV Extract\doc\images
4.4.    C:\Temp\MKV Extract\doc\mkvextract.html
4.5.    C:\Temp\MKV Extract\doc\mkvinfo.html
4.6.    C:\Temp\MKV Extract\doc\mkvmerge-gui.hhc
4.7.    C:\Temp\MKV Extract\doc\mkvmerge-gui.hhk
4.8.    C:\Temp\MKV Extract\doc\mkvmerge-gui.hhp
4.9.    C:\Temp\MKV Extract\doc\mkvmerge-gui.html
4.10.   C:\Temp\MKV Extract\doc\mkvmerge.html
4.11.   C:\Temp\MKV Extract\doc\mmg.html
4.12.   C:\Temp\MKV Extract\doc\README.txt
4.13.   C:\Temp\MKV Extract\doc\README.Windows.txt
5.0.    C:\Temp\MKV Extract\examples\example-chapters-1.xml
5.1.    C:\Temp\MKV Extract\examples\example-chapters-2.xml
5.2.    C:\Temp\MKV Extract\examples\example-cue-sheet-1.cue
5.3.    C:\Temp\MKV Extract\examples\example-tags-2.xml
5.4.    C:\Temp\MKV Extract\examples\example-timecodes-v1.txt
5.5.    C:\Temp\MKV Extract\examples\example-timecodes-v2.txt
5.6.    C:\Temp\MKV Extract\examples\matroskachapters.dtd
5.7.    C:\Temp\MKV Extract\examples\matroskatags.dtd
4.3.0.  C:\Temp\MKV Extract\doc\images\addingremovingattachments.gif
4.3.1.  C:\Temp\MKV Extract\doc\images\addremovefiles.gif
4.3.2.  C:\Temp\MKV Extract\doc\images\attachmentoptions.gif
4.3.3.  C:\Temp\MKV Extract\doc\images\audiotrackoptions.gif
4.3.4.  C:\Temp\MKV Extract\doc\images\chaptereditor.gif
4.3.5.  C:\Temp\MKV Extract\doc\images\jobmanager.gif
4.3.6.  C:\Temp\MKV Extract\doc\images\movietitle.gif
4.3.7.  C:\Temp\MKV Extract\doc\images\muxingwindow.gif
4.3.8.  C:\Temp\MKV Extract\doc\images\selectmkvmergeexecutable.gif
4.3.9.  C:\Temp\MKV Extract\doc\images\splitting.gif
4.3.10. C:\Temp\MKV Extract\doc\images\textsubtitlestrackoptions.gif
4.3.11. C:\Temp\MKV Extract\doc\images\trackselection.gif
4.3.12. C:\Temp\MKV Extract\doc\images\videotrackoptions.gif

编辑,代码现在更短。

于 2013-05-03T15:39:01.107 回答