Java 如何拆分arraylist<;文件>;加上/&引用;
我正在做一个贝壳。在控制台上,当用户输入Java 如何拆分arraylist<;文件>;加上/&引用;,java,arraylist,Java,Arraylist,我正在做一个贝壳。在控制台上,当用户输入cd“path”时,当前目录将在给定路径中更改。当用户输入查找“filename”时,我的程序将在该目录中搜索该文件并返回该目录的路径 我写了一个方法,打印所有文件,包括该目录下的子目录。。。但我不知道如何找到用户输入的特定文件并打印文件路径 我想我必须按/分割路径,然后将它们存储到数组列表中,然后使用用户输入“filename”将它们相等。我不知道如何将路径拆分为ArrayList 我的方法的当前状态: public static void findFi
cd“path”
时,当前目录将在给定路径中更改。当用户输入查找“filename”
时,我的程序将在该目录中搜索该文件并返回该目录的路径
我写了一个方法,打印所有文件,包括该目录下的子目录。。。但我不知道如何找到用户输入的特定文件并打印文件路径
我想我必须按/
分割路径,然后将它们存储到数组列表中,然后使用用户输入“filename”
将它们相等。我不知道如何将路径拆分为ArrayList
我的方法的当前状态:
public static void findFilesInDirectory()
{
ArrayList<File> anArray = new ArrayList<File>();
String getDirectoryName = presentWorkingDirectory;
findFilesProcess(getDirectoryName, anArray);
for(File str: anArray)
{
System.out.println("Hamza Found File: " + str);
}
}
public static void findFilesProcess(String directoryName, ArrayList<File> files)
{
File directory = new File(directoryName);
File[] fList = directory.listFiles();
for (File file : fList)
{
if (file.isFile())
{
files.add(file);
}
else if (file.isDirectory())
{
findFilesProcess(file.getAbsolutePath(), files);
}
}
公共静态void findFilesInDirectory()
{
ArrayList anArray=新的ArrayList();
字符串getDirectoryName=presentWorkingDirectory;
FindFileProcess(getDirectoryName,anArray);
for(文件str:anArray)
{
System.out.println(“Hamza找到文件:+str”);
}
}
公共静态void findFileProcess(字符串目录名、ArrayList文件)
{
文件目录=新文件(目录名);
File[]fList=directory.listFiles();
for(文件:fList)
{
if(file.isFile())
{
文件。添加(文件);
}
else if(file.isDirectory())
{
FindFileProcess(file.getAbsolutePath(),files);
}
}
要在目录中查找文件:
public static File[] findFilesInDirectory(String presentWorkingDirectory) {
// your directory
File f = new File(presentWorkingDirectory);
File[] matchingFiles = f.listFiles();
return matchingFiles;
}
如果只有字符串目录结构而不是实际目录,则可以使用以下代码段从目录结构中仅获取文件名或仅获取文件名:
public static void main(String[] args)
{
List<String> dirPaths = new ArrayList<String>();
dirPaths.add("/dir1/dir2/myfile1.txt");
dirPaths.add("/dir1/myfile1.txt");
dirPaths.add("/dir1/dir2/myfile2.txt");
dirPaths.add("myfile.txt");
for (String string : dirPaths)
{
String[] split = string.split("/");
System.out.println(split[split.length - 1]);
}
}
希望它能帮助你。祝你有一个愉快的一天。:-好的@muhammad让我们这样做吧
public static void main(String[] args)
{
// User input file name
final String searchFileName = "";
File f = null;
File[] paths;
try
{
// Your current working dir
f = new File("c:/test");
// create new filename filter
FilenameFilter fileNameFilter = new FilenameFilter()
{
public boolean accept(File dir, String name)
{
if (searchFileName.equalsIgnoreCase(name))
{
return true;
}
return false;
}
};
// returns pathnames for files and directory filtered by user search file name, now you just have to show path as per your requirement.
paths = f.listFiles(fileNameFilter);
// for each pathname in pathname array
for (File path : paths)
{
// prints file and directory paths
System.out.println("paths:" + path + " :: file name" + path.getName());
}
}
catch (Exception e)
{
// if any error occurs
e.printStackTrace();
}
}
希望这段代码至少能对您有所帮助。祝您愉快。:-请用示例进一步澄清问题。很难推断您想要实现的目标。我已经制作了一个shell。我希望用户输入“查找”空间“文件名”比我的代码在这个目录下搜索那个文件,如果文件存在,给用户提供路径发现文件路径像很多东西一样比它们看起来更复杂。例如,双斜杠被视为单斜杠。路径foo///bar//baz/qux///foobar
等同于foo/bar/baz/qux/foobar
。谢谢。但是我该怎么做呢可以解决这个问题。任何建议谢谢,但这没有帮助。非常感谢。“c:/Users/Hamza/Downloads”这是用户输入并查找“filename”的目录。现在我必须在所有子目录中搜索该文件名。你能帮我吗。。。
public static void main(String[] args)
{
// User input file name
final String searchFileName = "";
File f = null;
File[] paths;
try
{
// Your current working dir
f = new File("c:/test");
// create new filename filter
FilenameFilter fileNameFilter = new FilenameFilter()
{
public boolean accept(File dir, String name)
{
if (searchFileName.equalsIgnoreCase(name))
{
return true;
}
return false;
}
};
// returns pathnames for files and directory filtered by user search file name, now you just have to show path as per your requirement.
paths = f.listFiles(fileNameFilter);
// for each pathname in pathname array
for (File path : paths)
{
// prints file and directory paths
System.out.println("paths:" + path + " :: file name" + path.getName());
}
}
catch (Exception e)
{
// if any error occurs
e.printStackTrace();
}
}