2009-08-12 12 views
0

Hallo ... Ich suchte die Website und fand einen anderen Code, der richtig funktioniert.Verwenden Sie Sounds in Java

Jetzt habe ich ein anderes Problem:

Wenn ich Objekt von Schlag-Klasse erstellen und die Adresse des Audio an den Konstruktor schicken, ich habe wie die vollständige Adresse senden:

„C: \ Dokumente und Einstellungen \ TheHero \ Eigene Dateien \ NetBeansProjects \ project1 \ src \ project1 \ s1.wav "

Aber ich möchte diesen Code nur mit dem Namen des Sounds wie:" s1.wav "verwenden.

Ich kopierte den Sound in den Ordner Src und dann "s1.wav" und das Ergebnis war "java.io.FileNotFoundException".

Wenn ich vollständige Adresse von Sound verwenden, wenn ich das Programm auf einem anderen Computer ausführen, funktioniert es nicht. Ich habe recht?

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

public class 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(); 
    }   
} 

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

ich habe das gleiche Problem mit Bildern. Wenn ich diese Codes verwende, muss ich die vollständige Adresse des Bildes verwenden

Bitte jemand mir helfen! Ich brauche diese wirklich! Danke euch allen ....

Antwort

6

Sie können URLs zum Abrufen von Bild- und Tondateien verwenden. Zum Beispiel:

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

... wird die Image-Datei aus dem Paket com.foo abrufen vorausgesetzt, es auf Ihrem Classpath ist irgendwo (zum Beispiel in einer JAR-Datei gebündelt).

EDIT

Für Audio-Dateien Sie einen ähnlichen Ansatz; z.B. etwas wie:

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

könnte u bitte mehr erklären? Was hast du geschrieben für Bilder, was ist mit Sounds? Kann ich Sound im Ressourcenordner ablegen? –

+0

@Hamed - Ich habe meine Antwort erweitert. Ich hoffe, das hilft. – Adamski

+0

HAHAHA !!! Ich habe es geschafft, es funktioniert jetzt! senden Sie einfach die relative Adresse an den Konstruktor! –

1

FileInputStream (Dateiname) ist der Schlüssel.

Der Dateiname kann absolut oder relativ sein. Du scheinst zwei Probleme zu haben.

1). relative Pfade, s1.wav wird relativ zum Arbeitsverzeichnis der laufenden Anwendung sein, das ist fast sicher nicht Ihr src-Verzeichnis.

2). absolute Pfade auf einer anderen Maschine macht

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

tatsächlich auf dem Remote-Rechner existieren?

0

Statt Kopieren Sie die Datei in das src, kopieren Sie sie in den bin Ordner.Hier findet die Ausführung statt.

Wenn das nicht funktioniert, können Sie anrufen:

Properties sysProps = System.getProperties(); 

dann durch die Eigenschaften laufen und suchen Sie nach einem, die Ihr aktuellen Arbeitsverzeichnis ist. Dort legen Sie Ihre WAV-Datei ab.