如何在运行时杀死java中的javaw.exe

时间:2016-04-25 11:49:55

标签: java file jsp delete-file javaw

我有一个生成输出文件的java代码。当我想在运行时在此java代码中删除此输出文件时,无法删除它。例如:

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"在任务管理器中进程,我可以删除该文件夹上的这个文件。 我的问题是,我该如何解决这个问题?我想杀死" javaw.exe"在java中运行时,可以删除此文件。如何杀死这个" 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应用程序。我没有分享所有部分,因为如果我共享代码的所有部分,很难理解。这段代码生成一个输出文件,它接受输入文件,然后排序新的&#34; output.txt&#34;文件。我想在我的JSP中删除这个文件,但由于javaw.exe仍在运行,因此无法删除。

输出文件在&#34; D:\ eclipse-jee-mars-R-win32-x86_64 \ eclipse&#34;上生成。目录无论如何,我不想解释细节以防止头脑混乱。

1 个答案:

答案 0 :(得分:0)

我解决了我的问题。 我忘了关闭我的BufferedReader。在我的程序中有一些过渡方法我无法共享所有这些方法。这些转换方法是关于文件处理的,有一次,我忘了关闭我创建了另一个位置的BufferedReader。关闭我的BufferedReader后,我可以动态删除&#34; output.txt&#34;在其他地方。我正在分享我的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进程。