- ベストアンサー
getAudioClipメソッドについて
JavaアプレットのAudioClipインターフェースのメソッドで、getAudioClip(URL,音声ファイル名)がありますよね?この引数のURLの書き方が分かりません。 例えば音声ファイルが、C:\apフォルダにあるとします。こういう場合はURLをどう記述すればよいでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
慌てすぎた… もちろん、 new URL("file:/C:/ap/") のように指定することもできる。 ただし、セキュリティチェックにより任意のディレクトリを指定できず、 デフォルトではアプレットの置かれたディレクトリまたはサブディレクトリ下にないと読まれないと思う。
その他の回答 (2)
- vaguechat
- ベストアンサー率85% (47/55)
一つ注意を忘れてた。アプレットでは、 new java.io.File("C:\\ap").toURI().toURL() はセキュリティチェックに引っかかってエラーになるはずなのでアプレット内に直接コーディングしてはいけない。許可していれば別だが。 ローカルなディレクトリを直接指定するのでなく、 Applet#getCodeBase()やApplet#getDocumentBase()などでアプレットの位置からURLを得た方がいいと思う。
- vaguechat
- ベストアンサー率85% (47/55)
ファイルやディレクトリパスのURL表現を得るにはFile#toURI()でURI表現を得てからURI#toURL()とする。 FileからURLを直接得るFile#toURL()というメソッドもあるが非推奨メソッドとなっている。 java.net.MalformedURLException例外を投げるのでその対応も。 java.net.URL url = new java.io.File("C:\\ap").toURI().toURL(); System.out.println(url); うちのWindowsの環境では、、 C:\ap というパスは、 file:/C:/ap となった。
お礼
大変遅くなりました。ありがとうございました。 まず、音声ファイルをおきたいディレクトリで、別のアプレットプログラムを作って、getDocumentBase()を出力して、URLを知りました。 実はその時、文字列をして出力できるから、URLはString型のデータだと思い込んでしまいました。 それでgetAudioClipメソッドで引数を直接、文字列でURLを書いて上手くいかない!!なぜ?と少し悩みました。 が、これもおっしゃるとおり、URLコンストラクタで上手くできました。URL表現はオブジェクトを使わないといけないんですね。文字列で出力できたからといって、String型のデータだとは限らないんですね。勉強になりました。