2016-04-25 8 views
0

出力ファイルを生成するJavaコードがあります。このJavaコードで実行時にこの出力ファイルを削除したい場合、削除することはできません。例:実行時にjavaのjavaw.exeを削除するには

File file2= new File("D:\\eclipse-jee-mars-R-win32-x86_64\\eclipse\\output.txt"); 
    if(file2.delete()){ 
       System.out.println(file2.getName() + " is deleted!"); 
      } 
      else{ 
       System.out.println("Delete operation is failed."); 
      } 

このコードは機能しません。 ( "output.txt"ファイルはこのディレクトリに生成され、フォルダ内に表示されます)

実際には、Windowsフォルダで削除したいときは削除できず、このエラーが発生します。私は英語に翻訳します。

Screenshot

私は、タスクマネージャで「javaw.exeの」プロセスを強制終了した場合、私は、フォルダにこのファイルを削除することができます。 私の質問は、どうすればこの問題を解決できますか?私はこのファイルを削除することができるように、Javaで実行時に "javaw.exe"を強制終了したい。この「javaw.exe」プロセスをjavaの実行時に強制終了するには?実行時に "javaw.exe"プロセスをコード内で終了すると、別の問題が発生しますか?

この出力ファイルはどのように生成されますか?

import java.io.BufferedReader; 
import java.io.FileReader; 
import java.io.IOException; 
import java.util.Arrays; 
import java.io.FileWriter; 

public class code{ 

    public static void main(String[] args) { 

     try (BufferedReader br = new BufferedReader(new FileReader(args[0]))) 
     { 

      int lines = 0; 
      while (br.readLine() != null) lines++; // to get text's number of lines 

      String sCurrentLine; 
      BufferedReader br2 = new BufferedReader(new FileReader(args[0])); //to read and sort the text 

      String[] array; //create a new array 
      array = new String[lines]; 

      int i=0; 
      while ((sCurrentLine = br2.readLine()) != null) {//fill array with text content 
       array[i] = sCurrentLine; 
       i++; 
      } 
      Arrays.sort(array); //sort array 


      FileWriter fw = new FileWriter("output.txt"); 

      for (i = 0; i < array.length; i++) { //write content of the array to file 
       fw.write(array[i] + "\n"); 
      } 
      fw.close(); 


      System.out.println("Process is finished."); 


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

    } 
} 

実際、JSPを使用してJavaコードをオンラインでコンパイル/実行するWebアプリケーションを開発しています。私はすべての部分を共有していませんでした。なぜなら、私のコードのすべての部分を共有するのは分かりません。このコードは出力ファイルを生成し、入力ファイルを取り出し、新しい "output.txt"ファイルをソートして作成します。私のJSPでこのファイルを削除したいのですが、javaw.exeがまだ実行されているため、削除できませんでした。

出力ファイルは "D:\ eclipse-jee-mars-R-win32-x86_64 \ eclipse"ディレクトリに生成されますが、混乱を避けるために詳細を説明しません。

+1

このコードはどのように生成されますか? – Berger

+0

あなたのプログラムの最後にSystem.exit(int i)を使わなければならないかもしれませんか? – mrbela

+0

良い質問、使用して FileWriter fw = new FileWriter( "output.txt");用 \t \t \t(i = 0; I

答えて

0

私は私の問題を解決しました。 BufferedReaderを閉じるのを忘れました。私のプログラムにはいくつかの移行方法があり、それらをすべて共有することはできませんでした。これらの遷移メソッドはファイル処理に関するもので、ある時点で別の場所を作成したBufferedReaderを閉じることを忘れてしまいます。私はBufferedReaderを閉じた後、他の場所で "output.txt"を動的に削除することができました。私は私のviewtextメソッドを共有しています。 jsp textareaの出力ファイルを表示するために使用されます。

public static String viewtext(String pathname) throws IOException{ 


     String a=""; 

     File f = new File(pathname); 
     if(f.exists() && !f.isDirectory()) { 
      BufferedReader br = new BufferedReader(new FileReader(pathname)); 
       for (String line; (line = br.readLine()) != null;) { 
        a = a + line + "\n" ; 
        } 
       br.close(); //I added just this 
      return a; 
     } 
     else{ 
      // br.close(); //No need here, if there is no file no close is needed. 
      return "Your file is not found!"; 
    } 

} 

また、javaw.exeプロセスを強制終了する必要はありません。

関連する問題