Datei auf USB-Stick erstellen (Linux)

No-Fear

Grünschnabel
Hallo Leute,

erstmal. Es ist wirklich ein super Forum, wo einem geholfen wird. Vielen Dank dafür.

Jetzt zu meinem Problem:
ich schreibe gerade an einem Java-Programm. Ich möchte eine Datei auf einem USB-Stick erstellen. Der Stick ist in Linux unter /mnt/usb1 eingehängt. Wenn ich die Datei erstelle, sagt er mir " java.io.IOException: Permission denied" Warum? Ich habe als User alle Rechte. Ich kann ja selber im Filebrowser die Dateien erstellen. Aber warum klappt das unter Java nicht?

Marcel
 
Dazu habe ich momentan nur eine Vermutung, da ich auch nicht der Top Linux-Experte bin und noch nie mit Java unter Linux gearbeitet habe. Aber ich könnte mir vorstellen, dass die JVM (ähnlich wie mysql) unter Linux einen eigenen User hat um die Sicherheit zu erhöhen. Und diesem könnten die Rechte fehlen. Aber wie besagt nur Spekulation, da ich zwar ein wenig Ahnung von Linux habe aber es wie besagt lange nicht mehr verwendet habe und noch nie mit Java.
 
Nein, das ist es glaub ich nicht.
Wenn ich in Java den aktuellen benutzer abrufe mit
System.getProperty("user.name");
dann zeigt er mir den richtigen Benutzer an.
 
Kannst du ausschließen, dass dein File Manager mit erhöhten Rechten läuft? vielleicht stattdessen mit LibreOffice, GIMP, ... ne Datei erstellen.
 
Erstmal wären ein paar Infos hilfreich :
welches Linux genau .. es gibt haufen Linux-Derivate
welche Java-Version
Source-Code mit dem du Besagtes versuchst

Was du auch erstmal versuchen könntest wäre ein Terminal öffnen , prüfen ob du normaler User bist und keine erhöten Rechte hast , ViM oder sonstigen NORMALEN Text-Editor starten und mit diesem Versuchen das File zu erstellen , vorhandenes zu ändern / löschen ... und mit "ls -a" auch mal die Rechte des Mount-Punktes ausgeben. Es kann sein das du zwar über HotPlug auf dem Desktop das Gerät für dich normal mountest aber im Hintergrund alles mit erhöten Rechten läuft.
 
Hi danke für die Antworten.

Also ich habe ...
Ubuntu 11.04
Java 1.6.0.22

  • Mit der Konsole habe ich es ausprobiert. Ich kann Dateien erstellen.
  • Mit LibreWriter habe ich auch eine Datei auf dem Stick erstellen können.
  • Ich mounte den Stick ja unter meinen Benutzer mit dessen Rechten
  • Habe also vollen Zugriff

hier ein Ausschnit:
Java:
try {
  File f = new File("/mnt/usb1/info.txt");
  if(!f.exists())
    f.createNewFile();
}catch(IOException e) {
  System.out.println(e.toString());
}

Ausgabe
Code:
java.io.IOException: Permission denied
 
Zuletzt bearbeitet von einem Moderator:
Java:
Runtime.getRuntime().exec("touch /mnt/usb1/info.txt");

Damit funktioniert es. Aber warum nicht mit createNewFile();
 
Zuletzt bearbeitet von einem Moderator:
Ich habe keine Ahnung wieso, aber es funktioniert jetzt.
Hab eben ein bisschen rumprobiert. Danke für die Antworten.
 
Ich frage mich warum du überhaupt File.createNewFile() verwendest ...
Lies dir mal die Description dazu in der Java-Doc durch :

[...] erstellt ein neues File wenn und nur wenn kein File mit diesem Namen bereits vorhanden ist [...]

Dazu noch als anmerkung : wenn du mit File ein neues File erzeugen willst brauchst du nur einen FileOutputStream drauf setzen und was reinschreiben ... das File wird dann automatisch erzeugt.
 
Zurück