簡體   English   中英

從 java 中的本地目錄檢索文件路徑

[英]File Path retrieval from local directory in java

問題陳述:使用的語言 Java,文件類型是.feature

  1. 掃描位於 rootdirect 文件夾內的根文件夾中的所有文件 --> C:/src/test/resources/root 注意:根文件夾有超過 100 個文件和子文件夾

  2. 讀取所有文件並匹配某個字符串,如果文本匹配則返回文件名

  3. 獲取從步驟 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:

  1. 絕對路徑 C:\Users<xxx>\\filename.feature
  2. 路徑文件名.feature

預期 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM