java - 从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);
}
}
电流输出:
- 绝对路径 C:\Users<xxx>\\filename.feature
- 路径文件名.feature
预期输出:
对于 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]
推荐阅读
- angularjs - angularjs - 在降级组件中调用函数
- eclipse - 带有 RTC (WinHttpClients) 的 Eclipse 未处理的事件循环异常
- amazon-web-services - Alexa Skill S3 在 params 中缺少必需的密钥 Bucket
- face-detection - 在 OpenCV 3.7.6 中进行人脸检测时显示错误
- sql - 光标获取温度/结果表
- google-apps-script - 通过 Google Cloud Function 调用 Google Apps Script API
- python-3.x - 需要用 Pandas Dataframe 中的下一个值填充 NaN
- c++ - 如何写得更紧凑
- sql - SQL获取列唯一的所有列
- javascript - Javascript 通过此查找 OR/ELSE 通过此查找