[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends] Re: Solaris上のJFileChooserのファイル名直接入力について




Yuka Fukuda wrote:
> Java 2 for Solaris の Reference Implementation ですが、
> Linux 同様、上記の現象が起こります。
> $HOME のような環境変数の場合も、カレントdir + "/$HOME" になりました。

福田さん、ありがとうございました。

> > "../xx" や "./xx" のような入力も相対パス変換なしで、そのまま
> > ファイル名として(../. を含んだまま)選択決定となってしまうのかな。
> > (Windows上ではそうなります)
> 
> これについては、ちゃんと選択されているようです。
> /home/users/fukuda から "../" で /home/users ディレクトリに移動します。
> このとき /bin のように /usr/bin にリンクしてあるような場合は、
> リンクもとのパスの /usr に移りました。

私の書き方が悪かったです。
単純に "../" と入れた場合は良いのですが、"../file.o" 等とした場合に、
「現在開いているパス + "/../file.o"」で、選択決定がなされてしまう
ということを言いたかったのです。
気分的には、「現在開いているパスの親 + "/file.o"」となって欲しい
ところなのです。

Kazuya Maebashi wrote:
> '~'が、ユーザのホームディレクトリを示す、というのは、一介の
> シェルであるC-shellの仕様に過ぎないので、JFileChooser上で移
> 動できないのは当然ではないでしょうか?

確かに "~" や "$(HOME)" の展開はシェルの仕事なので、
FileChooserで出来ないのは当然というのは、技術的には了解できます。

しかし、シェル上でのファイル指定処理に相当する機能を果たすのが、
ファイル選択ダイアログの目的ですから、
ユーザの使い勝手としては出来てほしいと期待するところです。
# $(HOME)の展開はともかく "~" の展開は期待したい。

中川さんによれば java.awt.FileDialog では "~" の展開が出来る
とのことなので、JFileChooser でも出来てしかるべきかなと。

> DOSは全然知らないのですが、久野さんの話を聞くと、なんかちょっ
> と変な動きをしているような気はしますね。
> 
> command.comを経由しないとこんなもん?

元ネタの 「JFileChooserは、"\dir" と与えると、"C:\dir"とならず、
開いているディレクトリ + "\dir" となる」については、
"\dir"を"C:\dir"と解釈するのは command.com の仕事ではなく、
DOS/Windowsカーネルの仕事なのです。
(command.comはファイル名引数について何も変換しないです)

実際、(new File("\\dir")).getCanonicalPath() は "C:\dir"
を返しますので、クラス間で扱いに不整合があるという印象です。