2016-03-22 13 views
0

以下のコードは値を検索することができますが、今は検索されている値を置き換える必要があります。私はjavaを初めて利用しています。これはテキストエディタ検索と置換の機能を備えています。私が検索している単語を置き換える方法

public class TestClass { 

    public static void main(String[] args) { 
     @SuppressWarnings("resource") 
     Scanner scanner = new Scanner(System.in); 
     System.out.println("Enter Path to be searched"); 

     String directory = scanner.next(); 
     System.out.println("Enter String to be searched"); 
     String searchString = scanner.next(); 
     searchDirectory(directory, searchString); 

    } 
    static void searchDirectory(String directory, String searchString){ 
     File dir = new File(directory); 
     if(!dir.isDirectory()){ 
      System.err.println("PATH ENTERED is not directory"); 
      return; 
     } 
     try{ 
      for (File file : dir.listFiles()) { 
       if(!file.isDirectory()){ 

        String fileName = file.getName().toLowerCase(); 

        if (fileName.endsWith((".txt")) 
          ||fileName.endsWith((".log"))) { 

         @SuppressWarnings("resource") 
         BufferedReader br = new BufferedReader(new FileReader(file)); 
          String line; 
          int Count =0, 
           index = -1; 

          while ((line = br.readLine()) != null) { 
           Count++; 
           index = line.indexOf(searchString); 

           if(index != -1){ 
            System.out.println("Text '"+searchString+"' Found at position "+index +" in file "+ fileName +" at Line No "+Count); 
           } 
          } 
         } 

      }else{ 
       System.err.println("TestClass.searchDirectory(DIR)"+file.getAbsolutePath()); 
      // searchDirectory(file.getAbsolutePath(), searchString); 
      } 

      } 
      }catch(Exception e){ 
       e.printStackTrace(); 
      } 

    } 
} 
+1

を? 'searchDirectory(directory、someOtherString);'を呼び出すことはできません。 – Idos

+0

検索と置換操作を意味すると思いますか?その場合は、読み込みが完了するまでファイルの内容をメモリに保存しておき、検索文字列を置き換えて(格納中にその可能性があります)、最後にファイルの内容を上書きしなければなりません。ファイルが大きい場合は、一時ファイルを使用して書き込んだ後、元のファイルを一時ファイルに置き換えることができます(または一時ファイルを読み込んで、元のファイルに内容を書き込んでパーミッション、作成タイムスタンプなどを保存します)。 – Thomas

+0

「セキュリティ」という単語を検索する場合は、ディレクトリiamで検索できるようになりました。これで検索値を他の名前に置き換えます。 –

答えて

1

あなたはこの試みることができます:あなたは* *値を置き換えることにより、どのような意味ですか

public class TestClass { 

public static void main(String[] args) { 
    @SuppressWarnings("resource") 
    Scanner scanner = new Scanner(System.in); 
    System.out.println("Enter Path to be searched"); 

    String directory = scanner.next(); 
    System.out.println("Enter String to be searched"); 
    String searchString = scanner.next(); 
    searchDirectory(directory, searchString); 

} 
static void searchDirectory(String directory, String searchString) { 
    File dir = new File(directory); 
    if (!dir.isDirectory()) { 
     System.err.println("PATH ENTERED is not directory"); 
     return; 
    } 
    try { 
     for (File file : dir.listFiles()) { 
      if (!file.isDirectory()) { 

       String fileName = file.getName().toLowerCase(); 

       if (fileName.endsWith((".txt")) 
        || fileName.endsWith((".log"))) { 

        @SuppressWarnings("resource") 
        BufferedReader br = new BufferedReader(new FileReader(file)); 
        String line; 
        int Count = 0, 
         index = -1; 

        String replacedText = ""; 
        boolean hasValue = false; 
        while ((line = br.readLine()) != null) { 
         Count++; 
         index = line.indexOf(searchString); 

         if (index != -1) { 
          System.out.println("Text '" + searchString + "' Found at position " + index + " in file " + fileName + " at Line No " + Count); 
          line.replace(searchString, newString); 
          hasValue = true; 
         } 

         replacedText += line; 

         br.close(); 

         if (hasValue) { 
          FileWriter writer = new FileWriter(file); 
          writer.write(replacedText); 
          writer.close(); 
         } 
        } 
       } 
      } 
      else { 
       System.err.println("TestClass.searchDirectory(DIR)" + file.getAbsolutePath()); 
       // searchDirectory(file.getAbsolutePath(), searchString); 
      } 
     } 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
+0

それは私にとっては役に立たなかった –

+0

エラー/例外はありますか? –

+0

nullポインタの例外が来て –

関連する問題