4

TempFileJavaでの名前の最大長はどれくらいですか? これはMaximumFilesize、作成する一時ディレクトリを指定するマシンまたはその他の Java ベースのマシンに依存しますか?

メソッドをいつ呼び出すdeleteOnExit()か---しかし、JVMがダウンしたときに呼び出されるため、このメソッドの使用法は何ですか.しかし、本番ベースのサーバーでは24 * 7で実行されます.したがって、ファイルは継続的に作成され、メモリのためにファイルを作成するサーバー。

4

4 に答える 4

8

XX 秒より古い (変更された) 一時ファイルを自動クリーニングするには...

import java.io.File;
import java.io.IOException;
import java.util.HashSet;

public class FileAutoCleaner {
    final static FileAutoCleaner singleton = new FileAutoCleaner();
    final HashSet<File> bag = new HashSet<File>();

    public static FileAutoCleaner getInstance() {
        return singleton;
    }

    // This create the temp file and add to bag for checking
    public synchronized File createTempFile(String prefix, String suffix) throws IOException {
        File tmp = File.createTempFile(prefix, suffix);
        tmp.deleteOnExit();
        bag.add(tmp);
        return tmp;
    }

    // Periodically call this function to clean old files   
    public synchronized void cleanOldFiles(final int secondsOld) {
        long now = (System.currentTimeMillis() / 1000);
        for (File f : bag) {
            long expired = (f.lastModified() / 1000) + secondsOld;
            if (now >= expired) {
                System.out.println("Deleted file=" + f.getAbsolutePath());
                f.delete();
                bag.remove(f);
            }
        }
    }

    public static void main(String[] args) throws Exception {
        FileAutoCleaner fac = FileAutoCleaner.getInstance();
        System.out.println(System.currentTimeMillis() / 1000);
        fac.createTempFile("deleteme", "tmp");
        for (int i = 0; i < 5; i++) {
            System.out.println(System.currentTimeMillis() / 1000);
            // delete if older than 2 seconds
            fac.cleanOldFiles(2);
            Thread.sleep(1000);
        }
    }

}
于 2013-01-20T02:34:25.847 に答える
3

Java での TempFile の名前の最大長はどのくらいですか。MaximumFilesize は、作成する一時ディレクトリまたはその他の Java ベースのマシンに依存していますか?

 1775           static File generateFile(String prefix, String suffix, File dir) {
 1776               long n = random.nextLong();
 1777               if (n == Long.MIN_VALUE) {
 1778                   n = 0;      // corner case
 1779               } else {
 1780                   n = Math.abs(n);
 1781               }
 1782               return new File(dir, prefix + Long.toString(n) + suffix);
 1783           }

longそのため、ファイル名はプレフィックスサフィックス付きのランダムにすることができます

deleteOnExit() メソッドをいつ呼び出すか --- しかし、JVM がダウンしたときに呼び出されるため、このメソッドの用途は何ですか。しかし、本番ベースのサーバーでは 24*7 で実行されます

アプリケーションの存続のために作成する必要があるファイルがいくつかありますが、

たとえば、 Eclipse を起動すると、Eclipse が存在すると削除されるワークスペースをロックするために作成された .lock ファイルが表示されます。

于 2013-01-20T00:28:10.753 に答える
1

Java の最大ファイル サイズは Long.MAX_VALUE に制限されていますが、....これとファイル名の長さは、基になるファイル システムによって制限されています.... EXT4 (Linux) やNTFS (Windows)のように

于 2013-01-20T02:11:30.993 に答える
0

String tmpDir = System.getProperty("java.io.tmpdir");
ファイル file=new File(tmpDir+"\"+fileName+".tmp");

于 2015-09-29T11:39:49.923 に答える