2016-03-25 9 views
0

私はこのプログラムを持っていますが、ディレクトリではなくファイルを検索し、その中の特定の文章を検索してファイル名を印刷したいのですが、 と書いてあります。 ////////////フォルダにファイルがあり特定の文章があります

にFileNotFoundException

public static void main(String[] args) throws FileNotFoundException { 

    File file=new File("/Users/amoona/Desktop/MyDir"); 
    File[] matches = file.listFiles(); 

    for (int i=0;i<file.length();i++) { 
     Scanner sc=new Scanner (matches[i]); 
     if (matches[i].isFile()) { 
      System.out.println("It Is A File"); 
      while (sc.hasNext()) { 
       String s = sc.next(); 
       if ("King AbdulAziz University".equalsIgnoreCase(s)) { 
        System.out.println(matches[i].getName()); 
       } 
      } 
     } 
    } 
} 

が、私はこれにコードを変更しますが、ここでの問題は、それが特定の文を持っているファイル名を印刷does'tこと

ファイルファイル=新しいファイル( "/ Users/amoona/Desktop/MyDir"); File [] fList = file.listFiles();あなたのおi<matches.lengthを使用する必要があるときは、i<file.length()を使用しているforループで

for(File ff : fList){ 
     if (ff.isDirectory()!=true){ 
     Scanner sc=new Scanner (ff); 

      System.out.println("It Is A File"); 
      System.out.println(ff.getName()); 
      while(sc.hasNext()){ 
      String s=sc.nextLine(); 

      if (s.equalsIgnoreCase("King AbdulAziz University")){ 
       System.out.println("The File That Has King AbdulAziz University"); 
       System.out.println(ff.getName()); 
      }} 
     } 
    } 
+0

ラインはあなたにエラーを与える:ここで

は少し上記の点を含むように修正、あなたの方法ですか? – pczeus

+0

'next()'は次のトークンを返します(トークンのデフォルトの区切り文字はスペース文字です)ので、基本的には文ではなく単語を返します。 'nextLine'を試してみてください。 – Berger

答えて

0

あなたの方法に問題のカップルがあります:

1)他の人が述べたように、あなたのforループは、file.length()を使用しており、それがmatches.length照合しなければなりませんが、配列である - あなたは()を必要としません

2)ファイルにアクセスするためのScannerの作成は、if(subFile.isFile())チェックの後に置く必要があります。ディレクトリ上のスキャナを開けたくない場合や、「アクセス拒否」エラーが発生している可能性があります。

3)if条件:if (matches[i].isFile()==true)では、 '== true'部分は必要ありません。これは構文的には正しいものの、isFile()はブール値を返し、ifチェックで必要なものだけであるため、不要です。

public static void main(String[] args) throws FileNotFoundException{ 

    File file=new File("/Users/amoona/Desktop/MyDir"); 
    File[] matches = file.listFiles(); 


    for(int i=0;i<matches.length;i++){ 
     File subFile = matches[i]; 

     if (subFile.isFile()){ 
      System.out.println("Checking the file: " + subFile.getPath()); 
      Scanner sc=new Scanner (subFile); 

      while(sc.hasNext()){ 
       String s=sc.nextLine(); 

       if ("King AbdulAziz University".equalsIgnoreCase(s)){ 
        System.out.println("=====>> Found a match! " + subFile.getPath()); 
       } 
      } 
     } 
    } 
} 
関連する問題