考虑以下字符串数组,它是具有相对路径的文件名列表:
String[] myArray = { "src\\kop\\cKOP_C.o"
, "src\\io\\cIO_S.o"
, "src\\io\\com\\cGA_M.o"
, "src\\io\\cADC.o"
, "src\\io\\cIO_H.o"
, "src\\io\\com\\com_m.o"
, "src\\io\\tab_s.o"
, "src\\kop\\cKOP" };
目录布局为:
src\io\cADC.o
src\io\cIO_H.o
src\io\cIO_S.o
src\io\tab_s.o
src\io\com\cGA_M.o
src\io\com\com_m.o
src\kop\cKOP_A.o
src\kop\cKOP_B.o
我想在java中对这个数组进行排序,得到这样的结果:
src\\io\\cADC.o
src\\io\\cIO_H.o
src\\io\\cIO_S.o
src\\io\\tab_s.o
src\\io\\com\\cGA_M.o
src\\io\\com\\com_m.o
src\\kop\\cKOP_A.o
src\\kop\\cKOP_B.o
目前我使用 Array.Sort(myArray),但结果是这样的:
src\\io\\cADC.o
src\\io\\cIO_H.o
src\\io\\cIO_S.o
src\\io\\com\\cGA_M.o
src\\io\\com\\com_m.o
src\\io\\tab_s.o
src\\kop\\cKOP_A.o
src\\kop\\cKOP_B.o
这不是我想要keep
的,因为我要目录信息,所以先列出一个目录内的所有文件,如果里面有子目录,再列出子目录下的文件。
我知道我必须实现一个 Comparator() 才能按照我的意愿对数组进行排序,但我无法弄清楚比较背后的逻辑。