[英]File Path retrieval from local directory in java
問題陳述:使用的語言 Java,文件類型是.feature
掃描位於 rootdirect 文件夾內的根文件夾中的所有文件 --> C:/src/test/resources/root 注意:根文件夾有超過 100 個文件和子文件夾
讀取所有文件並匹配某個字符串,如果文本匹配則返回文件名
獲取從步驟 2 派生的文件路徑並獲取找到文本的完整行
我對第 1 步和第 2 步很好,但在第 3 步中卡住了。無論我使用什么 - File.getPath() 或 File.getAbsolutePath() 它都不會返回我派生文件的完整路徑。
public class ABC{
static String maindirpath = "C:\\Users\\<xxx>\\<somefolder>\\ <src\\test\\resources\\rootdirect";
static File maindir = new File(maindirpath);
String findText1 = "sometext";
public static void main(String[] args) {
if(maindir.exists() && maindir.isDirectory())
{
// array for files and sub-directories
// of directory pointed by maindir
File arr[] = maindir.listFiles();
// Calling recursive method
RecursiveScan(arr,0,0);
}
}
void RecursiveScan(File[] arr,int index,int level) throws IOException
{
// terminate condition
if(index == arr.length)
{ String eof = "No file exist";
usingBufferedWritter(eof);
return;
}
// tabs for internal levels
for (int i = 0; i < level; i++)
{
System.out.print("\t");
String tab = "\t";
usingBufferedWritter(tab);
}
// for files
if(arr[index].isFile())
{
String fileName = arr[index].getName();
Scanner myReader = new Scanner (arr[index]);
int linenum =1;
while (myReader.hasNext())
{
String data = myReader.nextLine();
if(data.contains(findText1))
{
//to print file name
System.out.println("Match found on " + arr[index].getName());
File fpath = new File(fileName);
String abspath = fpath.getAbsolutePath();
System.out.println("abs path "+abspath);
String pth = fpath.getPath();
System.out.println("path "+pth);
}
linenum++;
}
}
// for sub-directories
else if(arr[index].isDirectory())
{
System.out.println("[" + arr[index].getName() + "]");
// recursion for sub-directories
RecursiveScan(arr[index].listFiles(), 0, level + 1);
}
// recursion for main directory
RecursiveScan(arr,++index, level);
}
}
當前 output:
預期 output:
對於 rootdirec 文件夾“C:\Users<xxx><somefolder><src\test\resources\rootdirect\filename.feature”中的文件
對於 rootdirect 文件夾子目錄中的文件 "C:\Users<xxx><somefolder><src\test\resources\rootdirect\subfolder\filename.feature" 或
<src\test\resources\rootdirect\subfolder\subfolder1\filename.feature"
您已經擁有來自if(arr[index].isFile())
的文件:
File fpath = arr[index]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.