是否可以读取目录中的所有文件夹名称(不是子文件夹)并将列表保存在ArrayList
等中?
例如-如果一个目录里面有以下文件夹-CLIENT1、CLIENT2、CLIENT3等。我希望ArrayList
是这样的-[CLIENT1、CLIENT2、CLIENT3等]。
这些文件夹位于 unix 服务器中,因此可以使用 java 代码或 shell 脚本(bash/tcsh/etc)或它们的组合。
是否可以读取目录中的所有文件夹名称(不是子文件夹)并将列表保存在ArrayList
等中?
例如-如果一个目录里面有以下文件夹-CLIENT1、CLIENT2、CLIENT3等。我希望ArrayList
是这样的-[CLIENT1、CLIENT2、CLIENT3等]。
这些文件夹位于 unix 服务器中,因此可以使用 java 代码或 shell 脚本(bash/tcsh/etc)或它们的组合。
下面的 Java 代码片段应该对您有所帮助。它将返回目录中所有文件夹的列表。它可能会根据您处理任何可能的 IO 异常的方式返回一个空列表。
public List<String> getDirectoriesInFolder(String folderPath)
{
List<String> folderNames = new ArrayList<String>();
try
{
File directory = new File (folderPath);
String[] allFilesInFolder = directory.list();
for(String fileName : allFilesInFolder)
{
File f = new File(fileName);
if(f.isDirectory)
{
folderNames.add(fileName);
}
}
}
catch(IOException iex)
{
//Do any exception handling here...
}
return folderNames;
}
如果您想使用 Shell 脚本来执行此操作,那么以下链接中提供的指导应该可以帮助您找到解决方案:
对我来说,这比new File()
每次构建的钝迭代都要干净一些。
public class DirFilter implements FileFilter {
public static FileFilter INSTANCE = new DirFilter();
@Override
public boolean accept(File file) {
return file.isDirectory();
}
}
File startDir = .....;
List<File> children = Arrays.asList(startDir.listFiles(DirFilter.INSTANCE));
尝试这个:
File dir = new File("directoryName");
File temp;
String[] children = dir.list();
if (children !=null) {
for (int i=0; i<children.length; i++) {
temp = new File(children[i]);
if(temp.isDirectory()) //add children[i] to arrayList
}
}