私はJFilechooserのディレクトリパスを次のような方法で設定しようとしています(commons-ioを使用)。
String fileContents = IOUtils.toString(new FileInputStream("path.txt"));
File theDirectory = new File(fileContents);
filechooser = new JFileChooser();
fileChooser.setCurrentDirectory(theDirectory);
filechooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
GetCanonicalPath()を使用してパスを取得し、path.txtファイルに書き込みます
path = file.getCanonicalPath();
すべてのコードをここに配置するつもりはありませんが、プログラムがpath.txtのパスを書き込んだり読み取ったりすることは間違いありません。エラーは発生しませんが、プログラムを実行するたびに、常にドキュメントフォルダーにあるJFilechooserが開かれます。
現在のディレクトリをコンストラクタで直接渡してみてください:
filechooser = new JFileChooser(theDirectory);
デフォルトのコンストラクターを使用して [〜#〜] api [〜#〜] を参照する場合(つまり、new JFileChooser()
):
ユーザーのデフォルトディレクトリを指すJFileChooserを構築します。このデフォルトは、オペレーティングシステムによって異なります。これは通常、Windowsでは「マイドキュメント」フォルダ、Unixではユーザーのホームディレクトリです。
これは、MyDocumentsを常に開くことを考慮に入れているように見えるが、これはではないあなたの問題。実際、問題は現在のディレクトリの設定にあります(つまり、setCurrentDirectory(theDirectory)
):
現在のディレクトリを設定します。 nullを渡すと、ファイルチューザがユーザーのデフォルトディレクトリを指すように設定されます。このデフォルトは、オペレーティングシステムによって異なります。これは通常、Windowsでは「マイドキュメント」フォルダ、Unixではユーザーのホームディレクトリです。 currentDirectoryとして渡されたファイルがディレクトリでない場合、ファイルの親がcurrentDirectoryとして使用されます。親がトラバースできない場合、トラバース可能なディレクトリが見つかるか、ファイルシステムのルートに到達するまで、親ツリーを上に移動します。
そうは言っても、強調表示されたテキストに注意を払いますファイルを設定しているようですdirectoryではなく、現在のディレクトリとして。
最後に開いたディレクトリを選択するには:
chooser.setCurrentDirectory(lastDirectory);
int r = chooser.showOpenDialog(new JPanel());
if (r == JFileChooser.APPROVE_OPTION) {
fileName = chooser.getSelectedFile().getPath();
lastDirectory = chooser.getSelectedFile();
}
JFileChooser Chooser = new JFileChooser( "F:");
ディレクトリを変更する場合は、System.getPropertyメソッドを使用します。
String s=System.getProperty("user.dir"); // changes directory from documents to the user current Directory;
JFileChooser jfc = new JFileChooser(s);
あなたのメインクラスで宣言します
public static String dirpath=".";
private void btnBrowseActionPerformed(Java.awt.event.ActionEvent evt) {
JFileChooser jfc = new JFileChooser(dirpath);
dirpath =jfc.getSelectedFile().getAbsolutePath().toString();
}