2009-08-12 6 views
0

Bonjour ... J'ai cherché sur le site et trouvé un autre code qui fonctionne correctement.Utiliser les sons en java

Maintenant, j'ai un autre problème:

Lorsque je crée l'objet de la classe de soufflage et envoie l'adresse de l'audio à son constructeur, je dois envoyer l'adresse complète comme:

« C: \ Documents and Paramètres \ TheHero \ Mes documents \ NetBeansProjects \ project1 \ src \ project1 \ s1.wav "

Mais je veux utiliser ce code avec juste un nom de son comme:" s1.wav ".

J'ai copié le son dans le dossier src, puis j'utilise "s1.wav" et le résultat est "java.io.FileNotFoundException".

Si j'utilise l'adresse complète du son, lorsque je lance le programme sur un autre ordinateur, cela ne fonctionne pas. J'ai raison?

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

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

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

J'ai le même problème avec les images. Lorsque j'utilise ces codes, je dois utiliser l'adresse complète de l'image

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

S'il vous plaît aidez-moi quelqu'un! Je vraiment besoin de ces! Merci à tous les gars ...

Répondre

6

Vous pouvez utiliser des URL pour récupérer des fichiers image et son. Par exemple:

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

... récupère le fichier image à partir com.foo paquet en supposant qu'il est sur votre chemin de classe quelque part (par exemple regroupés dans un fichier jar).

EDIT

Pour les clips audio que vous prenez une approche similaire; par exemple. quelque chose comme:

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

Pourriez-vous s'il vous plaît expliquer plus? Qu'est-ce que vous avez écrit est pour les images, qu'en est-il des sons? Puis-je mettre du son dans le dossier de ressources? –

+0

@Hamed - J'ai étendu ma réponse. J'espère que cela pourra aider. – Adamski

+0

HAHAHA !!! Je l'ai fait, ça marche maintenant! suffit d'envoyer l'adresse relative au constructeur! –

1

FileInputStream (nom de fichier) est la clé.

Le nom de fichier peut être absolu ou relatif. Vous semblez avoir deux problèmes.

1). chemins relatifs, s1.wav sera relatif au répertoire de travail de l'application en cours d'exécution, ce n'est certainement pas votre répertoire src.

2). chemins absolus sur une machine différente

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

existe réellement sur la machine distante?

0

Au lieu de copier le fichier dans le src, le copier dans le dossier bin.C'est ici que l'exécution a lieu.

Si cela ne fonctionne pas, vous pouvez appeler:

Properties sysProps = System.getProperties(); 

itérer Puis à travers les propriétés et chercher un qui est votre répertoire de travail courant. C'est là que vous mettez votre fichier wav.

Questions connexes