2009-08-12 16 views
0

こんにちは...私はサイトを検索し、正しく動作する別のコードを発見しました。Use sound in java

は、今は別の問題している:「

C:私は打撃クラスからオブジェクトを作成し、そのコンストラクタにオーディオのアドレスを送信すると、私は次のように完全なアドレスを送信するために

を持っている\ドキュメントと設定\ TheHero \ My Documents \ NetBeansProjects \ project1 \ src \ project1 \ s1.wav "

しかし、私はこのコードを" s1.wav "のようなサウンド名で使用したいと考えています。

サウンドをsrcフォルダにコピーしてから「s1.wav」を使用し、結果は "java.io.FileNotFoundException"でした。

サウンドの完全なアドレスを使用すると、別のコンピュータでプログラムを実行すると機能しません。私は正しい?

// ********************************

パブリッククラスMusicPlayer {

private String filename; 

public MusicPlayer(String filename) { 
    this.filename = filename; 
} 
public void play() { 
    try { 
      InputStream in = new FileInputStream(filename); 
      AudioStream as = new AudioStream(in); 
      AudioPlayer.player.start(as); 

    } catch (IOException e) { 
      e.printStackTrace(); 
    }   
} 

// ****************************

私は画像と同じ問題を抱えています。これらのコードを使用する場合は、画像の完全なアドレスを使用する必要があります

 File input = new File(imageName); 
    image = ImageIO.read(input); 

どうか私を助けてください!私は本当にこれらが必要です! ありがとう皆さん...。

答えて

6

イメージとサウンドファイルを取得するためにURLを使用できます。たとえば:

new ImageIcon(getClass().getResource("/com/foo/myimage.png"))); 

は...それはどこか(例えば、jarファイルにバンドル)あなたのクラスパス上にあると仮定すると、パッケージcom.fooからイメージファイルを取得します。あなたが同様のアプローチを取るサウンドクリップのために

EDIT

。例えば

URL url = getClass().getResource("/com/foo/sound.wav"); 
AudioStream as = new AudioStream(url.openStream()); 
+0

詳細を教えてください。あなたが書いたのは画像のものですが、音はどうですか? リソースフォルダにサウンドを入れることはできますか? –

+0

@ハメド - 私は答えを広げました。希望が役立ちます。 – Adamski

+0

ハハハ!私はそれを作った、それは今働く! コンストラクタに相対アドレスを送信するだけです。 –

1

FileInputStream(ファイル名)がキーです。

ファイル名は、絶対パスでも相対パスでもかまいません。あなたには2つの問題があるようです。

1)。 s1.wavは、実行中のアプリケーションの作業ディレクトリからの相対パスになります。ほとんどの場合、srcディレクトリではありません。

2)。別のマシンの絶対パスは

C:\Documents and Settings\TheHero\My Documents\NetBeansProjects\ etc. 

実際にリモートマシンに存在しますか?

0

srcにファイルをコピーする代わりに、binフォルダにコピーしてください。これが実行される場所です。

そのdoesntの仕事であれば、あなたが呼び出すことができます。

Properties sysProps = System.getProperties(); 

次にプロパティを反復処理し、現在の作業ディレクトリです1を探します。そこにwavファイルを置く場所です。