2017-11-01 1 views
0

私はJavaでゲームをしています。オーディオファイルをInputStreamとして読み込み、そのファイルをAudioPlayerで再生するクラスがあります。javaオーディオファイルの場所

ファイルが見つかりません例外が発生します。

オーディオファイルをさまざまな場所に配置しようとしましたが、何も機能しませんでした。

これは私のクラスのコードです:

public void play(String string,int sleep) throws IOException 
{ 
    //this part does not recognize file 
    try { 
     //System.out.println(System.getProperty()); 

     AS = new AudioStream(new FileInputStream(string)); 
     AD = AS.getData(); 
     loop = new ContinuousAudioDataStream(AD); 
    } 
    catch(IOException error){ 
     System.out.print(string +" file not found"); 
    } 
    AP.start(loop);  
} 

私は(「オーディオ/ beginning.wav」)のような文字列を渡す

+0

ファイルが指定された位置に存在する場合は、適切な権利を持っていますか? あなたはプロジェクトの構造を表示/記述できますか? –

+0

オーディオファイルへのパスは、ソースコードのベースディレクトリからの相対パスである必要があります。たとえば、 'audio'ディレクトリがあなたのメインメソッドを含む' src'ディレクトリの隣にある場合、あなたの文字列は "../audio/beginning.wav"でなければなりません。あなたのプロジェクトの構造を知らずに何を渡すべきかを知るのは難しいです。 –

+0

"project/src/game/main method"に構造化されており、オーディオフォルダは "project/audio"にあります –

答えて

0

あなたはあなたの定義された作業ディレクトリからの相対パスを使用していますプログラムが実行されます。

プログラムをEclipseから実行している場合、デフォルトでプログラムのルートディレクトリ(プログラムの最上位フォルダ)です。だから通常はファイルをprogram_folder/audio/beginning.wavに置くとうまくいくはずです。タブArgumentsに行き、そしてあなたがWorking directoryを見つけることができます:

はしかし、作業ディレクトリは、プログラムを実行するために、Eclipseで使用している実行構成に変更することができます。 、問題をデバッグ、次の出力を確認するには

System.out.println(new File("").getAbsolutePath());  

別のオプションは、ファイルの絶対パスを使用することです。

+0

絶対パスは私にプロジェクトのルートを与えます。私はそこにファイルを配置しようとすると、まだそれを認識しません。私はちょうどうまく動作しているルートの画像のための別のフォルダがあります。私はそこにオーディオを置こうとしましたが、まだ動作していません。 –

+0

スタックトレースを投稿してください。また、 'play()'の中で、 'System.out.println(new File(string).getAbsolutePath());'を出力し、それが期待どおりであることを確認してください。 Windowsの場合は、実際の拡張子が隠されていないことを確認してください。 –

+0

にjava.io.IOException:sun.audio.AudioStream.getDataで \t audio.Audio.play(Audio.java:32) –

関連する問題