ubuntuusers.de

Java String != String ??

Status: Gelöst | Ubuntu-Version: Xubuntu 13.10 (Saucy Salamander)
Antworten |

Budada_Bubladend

Avatar von Budada_Bubladend

Anmeldungsdatum:
13. Dezember 2009

Beiträge: 812

Hallo liebe Java - Leute,

ich zweifle gerade ernsthaft an mir selbst. Ich habe folgenden Code um eine .wav Datei abzuspielen:

           try{
                    File yourFile;
		    AudioInputStream stream;
		    AudioFormat format;
		    DataLine.Info info;
		    Clip clip;
		
		    stream = AudioSystem.getAudioInputStream(yourFile);
		    format = stream.getFormat();
		    info = new DataLine.Info(Clip.class, format);
		    clip = (Clip) AudioSystem.getLine(info);
		    clip.open(stream);
		    clip.start();
		    System.out.println("laeuft");
		}
		catch (Exception e) {
			System.out.println("laeuft nicht");
                }

Wenn ich yourFile nun wie folgt instanziere, dann funktionier alles einwandfrei:

 File yourFile = new File( "/home/user/workspace/project/bin/file.wav" );

Das ist aber natürlich alles andere als sauber. Deshalb wollte ich es eigentlich ja auch so lösen:

File yourFile = new File( getClass().getResource("/file.wav").toString() );

Im Debug - Mode, steht in letzterem Beispiel exakt das gleiche, wie in meinem konstanten String. Kein Unterschied festzustellen! Trotzdem erhalte ich beim Aufruf mit getResource folgende Exception:

java.io.FileNotFoundException: file:/home/user/workspace/project/bin/file.wav (No such file or directory)

Auch hier: der angezeigt Filename ist exakt der gleiche String, wie der konstante.

Kann mir das jemand erklären oder noch besser: Mir sagen, was ich falsch mache? Ich bin gerade sehr verwirrt.

Danke schon mal im voraus Lg

BB

TheEvilTyper

Anmeldungsdatum:
23. Januar 2014

Beiträge: Zähle...

Hi,

du bist dir sicher, dass du beide male tatsächlich den Sting verwendest? Meines wissens nach existieren JAVA bei Stings zu einen Die Tatsächlichen Stings also deren inhalt wie "BLAB BLA BLA STING" oder es ist Auf die Speicheraddresse Zugewiesen Alos irged ein verwirrender Hexcode, wenn mann jetzt Pech hat (ich habe leider schon zu lange kein JAVA mehr gemacht um dier hier genauer weiter zu helfen) kann trozt des Geleichen Stings durch verschidene Verwendung ein komplett neues ergebnis entstehen.

Das war jetzt nur Mal so ein Tip, Wie oben erwähnt binn ich ziemlich aus der JAVA materie raus

Budada_Bubladend

(Themenstarter)
Avatar von Budada_Bubladend

Anmeldungsdatum:
13. Dezember 2009

Beiträge: 812

Hey,

Danke für deine Hilfe. Da ich ja .toString() verwende, wird sicher der String verwendet! Wie gesagt, bekomme ich ja auch in der Exception den richtigen Pfad angezeigt und weiß somit, dass der String und nicht etwa die Speicheradresse geholt wird.

Trotzdem danke für deine Hilfe!

anrub

Avatar von anrub

Anmeldungsdatum:
4. Januar 2013

Beiträge: 336

File yourFile = new File( "/home/user/workspace/project/bin/file.wav" );

Das ist aber natürlich alles andere als sauber.

Wieso sollte das nicht sauber sein?

File yourFile = new File( getClass().getResource("/file.wav").toString() );

Wenn du genau hinschaust, ergibt das den String: "file:/home/user/workspace/project/bin/file.wav", der nicht gleich dem String "/home/user/workspace/project/bin/file.wav" ist.

Du kannst auch direkt einen InputStream erzeugen, falls das File im ClassPath liegt.

1
2
    InputStream is = getClass().getResourceAsStream("/file.wav");
    stream = AudioSystem.getAudioInputStream(is);

Grüße, anrub

Budada_Bubladend

(Themenstarter)
Avatar von Budada_Bubladend

Anmeldungsdatum:
13. Dezember 2009

Beiträge: 812

Wenn du genau hinschaust, ergibt das den String: "file:/home/user/workspace/project/bin/file.wav", der nicht gleich dem String "/home/user/workspace/project/bin/file.wav" ist.

Verdammt! Natürlich!! Danke dir anrub. Da war ich wohl etwas betriebslind gerade!

Antworten |