0

このを参考にして、サーブレットアプリケーションを作成しました。

コードに記載されている TMP_DIR および DEST_DIR パスで完全に正常に動作します ( tmpC ドライブに名前の付いたフォルダーを作成しfiles、アプリケーションフォルダー内に名前のフォルダーを作成しました。

現在、コードを Linux マシンに移行していますが、C: という名前のドライブがないため、これは機能しません。c:\\tmpアプリケーションフォルダー内にコードを置き換えてみました/tmp(そしてフォルダーtmpを作成しました)。しかし、うまくいきません。このコードをジェネリックにするにはどうすればよいですか? お知らせ下さい。

4

3 に答える 3

2

一時ディレクトリが必要な場合は、http://commons.apache.org/io/apidocs/org/apache/commons/io/FileUtils.htmlを使用て、getTempDirectory()を探します。これはどこでも機能するはずです

したがって、システムによって提供されるSystemTemporaryディレクトリが必要です。これは、パスまたは実際のファイルから取得できます。(IOUtilsは両方のアプローチを提供します)。ここにIOUtilドキュメントがあります:getTempDirectory

public static File getTempDirectory()

    Returns a File representing the system temporary directory.

    Returns:
        the system temporary directory.

したがって、次のように記述します。

File myTempFile = IOUtils.getTempDirectory();

次に、myTempFileが書き込み先になります。

一部のアプリが名前でディレクトリを要求している場合は、パス名を指定するgetTempDirectoryPath()を使用できます。

あなたの例では、私は次のように書きます。

private static final String TMP_DIR_PATH = IOUtils.getTempDirectoryPath();

または@dogbaneのアプローチを使用します:

private static final String TMP_DIR_PATH = System.getProperty("java.io.tmpdir");

私は彼らが同じ答えを与えることを期待します。

それでも混乱している場合は、質問を続けてください-それがSOの目的です!

更新:Filesで何かをしている場合は、ApacheのFileUtilsとIOUtilsに精通する価値があります。JDKがうまく機能しない、または自然に機能しないことがいくつかあり、Apacheはより優れたサポートを提供します。

于 2010-11-02T17:46:00.527 に答える
2

File.pathSeparatorを使用して、システムに依存するパス区切り文字を取得します。

編集:

一時的なディレクトリが必要な場合は、File.createTempFile(..)を使用してください

ファイルパスの例:http://www.exampledepot.com/egs/java.io/ConstructFilePath.html

一時ファイルの例:http://www.exampledepot.com/egs/java.io/CreateTempFile.html

編集:

サーブレット環境でのファイルの保存:ここ

于 2010-11-02T17:42:05.843 に答える
2

一時ファイルを保持するために使用されるプラットフォーム固有のディレクトリの場所は、プロパティによって定義されますjava.io.tmpdir

したがって、コードで使用できるのは次のとおりです。

private static final String TMP_DIR_PATH = System.getProperty("java.io.tmpdir")
于 2010-11-02T17:52:23.623 に答える