3

一部のファイルを解凍するためにフォルダーを作成する必要があるアプリケーションがありますが、アプリケーションが実行できるファイルパスを渡し、任意のOSでファイルを作成して保存したいのですが、出力パスがどうあるべきかわかりませんそれをするために。

例えば:

File folder = new File(outputFolder);
if (!folder.exists()) {
    folder.mkdir();
}

オペレーティングシステム(Windows、Mac、またはLinux)のDocuments / UnzipTestにフォルダーを作成するには、outputFolderでどのパスを使用する必要がありますか?

4

5 に答える 5

6
System.getProperty("user.dir");

または、Java7を使用している場合

Filesystems.getDefault();

作業するベースディレクトリが表示されます。

于 2013-01-27T21:01:46.053 に答える
2

java.io.File#separatorを使用します:

String userHome = System.getProperty("user.home");
String outputFolder = userHome + File.separator + "dir1";
File folder = new File(outputFolder);
if (!folder.exists()) {
   folder.mkdir();
}
于 2013-01-27T21:14:46.083 に答える
1

ルートフォルダのプロパティ(たとえば、一部の外部プロパティファイル)を定義します。これにより、ユーザーは、セットアップ後またはインストール中にすべての操作のルートフォルダを定義できます。

他のオプションは、システムプロパティで定義されたこのルートフォルダ(または上記のプロパティが定義されていない場合)としてユーザーフォルダ(別名ホームフォルダuser.dir)を使用することです。または、アプリケーションがインストールされているフォルダーを使用します。たとえば、アプリケーションjarでリソースを検索し、返されたURLからパスを解析することで見つけることができます。

ルートフォルダを定義すると、コンストラクタを使用できますnew File(rootFolder, outputFolder)。ここでは、パスにスラッシュを使用できますoutputFolder(例:/ foo / bar)。このようなパスは、すべてのOSで機能します。

于 2013-01-27T21:04:25.383 に答える
1

クラスとでApacheCommonsのCommonsIOを使用できます。FileUtilsFilenameUtils

アプリケーションでパスにUNIXスタイルを使用している場合は、次の方法でパスをSOスタイルに変換できます。

org.apache.commons.io.FilenameUtils.separatorsToSystem(String)

存在しない場合にのみディレクトリを作成する場合:

org.apache.commons.io.FileUtils.forceMkdir(File)

ディレクトリへのパスがあり、このディレクトリに新しいフォルダが必要な場合は、フルパスを取得する方法を使用して連結できます。

org.apache.commons.io.FilenameUtils.concat(String, String)

返されるパスは常に正規化されており、システムの形式の区切り文字が含まれています。

ユーザーディレクトリパスが必要な場合があります。

org.apache.commons.io.FileUtils.getUserDirectory()
于 2013-01-27T21:55:06.237 に答える
0
String outputFolder = System.getProperty("user.home") + File.separator + "Documents" + File.separator +"TestandoUnzip";

必要なコード。みんなありがとう。

于 2013-01-27T21:36:45.753 に答える