Java RandomAccessFile

sam*_*ina 2 java

    public void exportUrlsToFile(String file, String urls) throws IOException {
    String[] urlsArray = urls.split("\\s+");// split on one or more white space characters.

    // create a fresh file
    RandomAccessFile raf = new RandomAccessFile(file, "rw");

    for (String line : urlsArray) {
        line = line.trim();
        if (line.isEmpty()) {// this won't happen!
            continue;
        }
        raf.writeBytes(line);
        raf.writeBytes(newline);
    }
    // close the file handler
    raf.close();
}
Run Code Online (Sandbox Code Playgroud)

基本上我用这个班做点什么.这是在tomcat JVM中运行的应用程序的一部分.我注意到,无论何时调用此方法,它都会创建一个与参数同名的文件,并且在raf.close()之后,它仍然存在.如何确保删除临时文件.

提前致谢.

Tof*_*eer 6

一个更好的问题是,为什么你想要完成制作文件的所有麻烦,将文件写入文件,然后只删除文件?

无论你不需要随机访问文件 - FileWriter会更好.

要确保删除文件,请按照Eddie的建议将删除放在finnaly块中 - 但是您还需要确保处理raf.close()IOException ...类似于:

} finally {
    try
    {
        raf.close();
    }
    catch(final IOException ex)
    {
         // in 14 years of Java programming I still don't know what to do here! ;-)
    }
    finally
    {
        File todelete = new File(file);
        if (!todelete.delete()) {
            // Log a complaint that we couldn't delete the temp file
        }
    }
}

编辑:

您可能还意味着在Tomcat进程完成后,文件仍然存在并且您希望它消失.如果是这种情况,请查看java.io.File.deleteOnExit().这应该在Tomcat JVM存在时删除文件.