File.canWrite() immer true?

Status
Nicht offen für weitere Antworten.

Claude

Mitglied
Ich weiss nicht was ich falsch mache aber wenn ich auf Windows (XP oder Vista) nach den Schreibrechten einer Datei frage erhalte ich immer true zurück (ausser die Datei existiert gar nicht).

Ich habs vorerst so gelöst dass wenn es Windows ist die zu testende Datei umbenannt wird, und dann wieder zurück umgenannt wird. wenn das geht habe ich wohl schreibrechte sonst nicht. Aber das muss doch besser gehen.

Das Javadoc sagt ja zu File#canWrite() folgendes:
"Tests whether the application can modify the file denoted by this abstract pathname."

Wieso erhalte ich dann true als Antwort wenn das dann doch nicht geht.
Das Problem besteht vor allem dann wenn ein Admin eine Datei erstellt (zB bei Installation des Programms) und dann ein normaler User diese Datei überschreiben will (z.B. Programmupdate).

Und wie ist das bei Vista? Da kann man ja die ungeheuerlichsten Sachen machen und Vista versucht dann die Datei an einer anderen Stelle zu speichern und tut nur so als sei die Datei da. Ich will aber wissen ob ich da nun wirklich Schreibrechte habe.

Claude
 

max40

Bekanntes Mitglied
File.canWrite() prüft ob das Attribute "Schreibgeschützt" an der Datei gesetzt ist!
Aber File.canWrite() prüft nicht Benutzerberechtigung wie admin darf aber Benutzer xyz darf nicht!
gruß
 

Claude

Mitglied
Ich sehe gerade es gibt eine Klasse FilePermission. Das klingt schon mal vielversprechend.
Und File#getUsableSpace() könnte auch nicht nützlich sein.
 

Claude

Mitglied
Hm, das mit AccessController.checkPermission() geht auch nicht. der sagt mir jetzt immer ich hätte keine rechte obwohl ich welche habe.

java.security.AccessControlException: access denied (java.io.FilePermission D:\Daten\* read,write)

Wie kann das nur sein, wo Java problemlos in diesen Ordner schreiben kann?!
 

Claude

Mitglied
genau, könnte auch nicht nützlich sein. Was hat der UsableSpace mit Berechtigungen zu tun?

Ich hab halt die blöde Angewohnheit erst mal im Handbuch zu lesen:

* Returns the number of bytes available to this virtual machine on the
* partition <a href="#partName">named</a> by this abstract pathname. When
* possible, this method checks for write permissions and other operating
* system restrictions and will therefore usually provide a more accurate
* estimate of how much new data can actually be written than {@link
* #getFreeSpace}. [meine Hervorhebung]

Wenn diese Funktion mir sagen würde ob und wieviel ich schreiben darf wäre das durchaus nützlich. Oder auch nicht, ich weiss jetzt auch nicht, ich will doch einfach nur wissen ob ich Schreibrechte habe oder nicht.
 

max40

Bekanntes Mitglied
Wie wär es den mit java.io.RandomAccessFile oder mit java.lang.SecurityManager? Damit bekommst du heraus ob du Schreiben und Lesen darfst!
 

max40

Bekanntes Mitglied
Ja, RandomAccessFile brauchst du nicht, aber den SecurityManager den hast du, der ist seit dem jdk1.0 dabei!
Versuch doch einfach:

SecurityManager manager = new SecurityManager();
manager.checkWrite("filename");

checkWrite wirft eine Exception falls du nicht schreiben darfst!

Den AccessController verwendet man um Code mit bestimmten Berechtigungen auszuführen! Aber das wolltest du ja nicht oder?
 

Claude

Mitglied
Na gut, ich kann einen machen, ich meinte eigentlich System.getSecurityManager(), der war halt null. Aber egal, denn das macht nichts anderes als AccessController.checkPermission() ausführen und das geht wie gesagt nicht.
Es sagt ich habe keine Schreibrechte aber wenn ich schreibe geht's dann doch.
Zumindest hier auf Windows 2000, wo ich das gerade teste. Es soll dann auf 2k,XP und Vista gehen.
Auf Unix hatte es ja bisher mit canWrite() funktioniert, zumindest dachte ich das, wobei ich das auch nochmals genauer testen sollte.
Mir scheint dass ich nicht drum rum komme eine Datei umzubenennen um zu sehen was passiert und dann auf Grund dessen zu entscheiden ob ich da Schreibrechte habe oder nicht. Das dürfte auch auf allen Systemen funktionieren.

Ich will halt nicht dem Benutzer sagen es gäbe ein Update fürs mein Programm und dann geht es doch nicht weil die Schreibrechte fehlen.
 

The_S

Top Contributor
Ich hab halt die blöde Angewohnheit erst mal im Handbuch zu lesen:

* Returns the number of bytes available to this virtual machine on the
* partition <a href="#partName">named</a> by this abstract pathname. When
* possible, this method checks for write permissions and other operating
* system restrictions and will therefore usually provide a more accurate
* estimate of how much new data can actually be written than {@link
* #getFreeSpace}. [meine Hervorhebung]

Wenn diese Funktion mir sagen würde ob und wieviel ich schreiben darf wäre das durchaus nützlich. Oder auch nicht, ich weiss jetzt auch nicht, ich will doch einfach nur wissen ob ich Schreibrechte habe oder nicht.

Hm, da steckt wohl mehr hinter der Methode, als der Name vermuten lässt. Ich vermute aber, dass sich das wieder auf den Schreibschutz bezieht!?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Input/Output File exists canRead canWrite Java Basics - Anfänger-Themen 11
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
I Bild richtig speichern / Hochkant im File Explorer, nach Upload vertikal Java Basics - Anfänger-Themen 9
R File.pathSeparator und File.separator Java Basics - Anfänger-Themen 46
KeinJavaFreak Erste Schritte Java "Executable Jar File" nicht vorhanden Java Basics - Anfänger-Themen 1
izoards Prunsrv - Windows Service - .bat file starten Java Basics - Anfänger-Themen 84
I File Uploader... Statusanzeige, Berechnung des Status etc. Java Basics - Anfänger-Themen 0
I H2 Datenbank starten / Daten in File speichern Java Basics - Anfänger-Themen 25
G jar file lässt sich nicht öffnen Java Basics - Anfänger-Themen 1
N Textdatei aus Resourcen-Ordner eines Projekts/ jar-file lesen Java Basics - Anfänger-Themen 4
J File length als Prüfwert für Download Java Basics - Anfänger-Themen 5
berserkerdq2 Überprüfen ob eine Schreibberechtigung auf ein file exisitert bzw. ob man dieses file löschen kann, wie? Java Basics - Anfänger-Themen 9
berserkerdq2 IOstreams, was unterscheidet file von z. B. BufferedWriter? Java Basics - Anfänger-Themen 11
J Datentypen String in File konvertieren funktioniert nicht Java Basics - Anfänger-Themen 4
A java jar-File Java Basics - Anfänger-Themen 1
E Executable jar file fehler Java Basics - Anfänger-Themen 9
I Upload File zu einem Webservice Java Basics - Anfänger-Themen 17
I ZIP File erstellen Java Basics - Anfänger-Themen 10
LeoDerKek Textdatei in JAR-File Java Basics - Anfänger-Themen 4
Tom/S File Java Basics - Anfänger-Themen 10
AleXusher Mehrdimensionales Array aus txt.file auslesen Java Basics - Anfänger-Themen 4
A Checkstyle - File contains tab characters Java Basics - Anfänger-Themen 2
H Java file nicht gefunden Java Basics - Anfänger-Themen 5
C File speichern Java Basics - Anfänger-Themen 5
C Runnable Jar-File erzeugen Java Basics - Anfänger-Themen 14
C Pfad zu Properties-File bei ResourceBundle Java Basics - Anfänger-Themen 7
F GSON file mit einer List erstellen Java Basics - Anfänger-Themen 2
rafi072001 Lesen aus einem Excel File Java Basics - Anfänger-Themen 10
C Bild in executable JAR File mitgeben Java Basics - Anfänger-Themen 5
K File (png) in Image laden Java Basics - Anfänger-Themen 3
B Inputstream in file schreiben? Java Basics - Anfänger-Themen 23
S Input/Output Reader/Writer finden file nicht Java Basics - Anfänger-Themen 3
T Buffered Stream leert Txt File Java Basics - Anfänger-Themen 3
A 2d Arrays aus txt.file einlesen Java Basics - Anfänger-Themen 16
Dimax In Java File (nicht in Java Projekt) mysql Driver importieren Java Basics - Anfänger-Themen 3
K File wird in der .Jar nicht gefunden Java Basics - Anfänger-Themen 3
E TXT FILE EINLESEN Java Basics - Anfänger-Themen 4
Trèfle EXCEL-File Laufwerkunabhängig einbinden. Java Basics - Anfänger-Themen 1
B HTML File einlesen inkl. Bilder? Java Basics - Anfänger-Themen 2
B Hilfe bei InputStream To File Java Basics - Anfänger-Themen 22
topi relativer Pfad in einem Runnable JAR file Java Basics - Anfänger-Themen 12
A jar File kleiner bekommen Java Basics - Anfänger-Themen 3
B File öffnen in src/main/webapp Java Basics - Anfänger-Themen 4
K File-Name Vergleich Java Basics - Anfänger-Themen 2
krgewb Runnable JAR File Export Java Basics - Anfänger-Themen 11
S Maxium aus einer File finden Java Basics - Anfänger-Themen 12
dapzoo Class File Version zu niedrig? Ausführen über Eingabeaufforderung nicht möglich Java Basics - Anfänger-Themen 14
B cal4j - Error at line 1:Unexpected end of file Java Basics - Anfänger-Themen 0
P jar file lässt sich nicht ausführen Java Basics - Anfänger-Themen 4
E Best Practice Jar-file mit zwei Klassen und externer Bibliothek über Konsole erzeugen Java Basics - Anfänger-Themen 13
M Erste Schritte CSV-File einlesen und Daten verarbeiten Java Basics - Anfänger-Themen 5
F File von Windowsfreigabe laden Java Basics - Anfänger-Themen 1
S java.nio.file.FileSystemException bei Dateizugriff vermeiden Java Basics - Anfänger-Themen 7
Vince42 NIO File Tree in XML umwandeln Java Basics - Anfänger-Themen 10
J Zweidimensionales Array in CSV File exportieren Java Basics - Anfänger-Themen 3
E War-File Problem mit Eclipse Java Basics - Anfänger-Themen 3
B Excel File einlesen und Überschrift prüfen Java Basics - Anfänger-Themen 8
M Email versenden Outlook, attached File, ohne Anmeldung Java Basics - Anfänger-Themen 4
M Input/Output Word File Kopieren Java Basics - Anfänger-Themen 12
K Runable Jar File erstellen Java Basics - Anfänger-Themen 17
T Java Executable jar file funktioniert nicht Java Basics - Anfänger-Themen 4
sourcecorn Werte aus einem File lesen Java Basics - Anfänger-Themen 6
Kopak'rraf Korruptes zip File. Java Basics - Anfänger-Themen 0
T File für Einstellungen wird nicht geladen Java Basics - Anfänger-Themen 1
S Sounddatei in Jar File integrieren Java Basics - Anfänger-Themen 2
S Index File bauen Java Basics - Anfänger-Themen 5
T Anzeige, wie lange es noch dauert bis ein File gesendet ist. Java Basics - Anfänger-Themen 2
T filereader , file aus programm einlesen Java Basics - Anfänger-Themen 12
Ghostman1711 Itext PDF print File gelockt by Java Java Basics - Anfänger-Themen 15
N Email mit Anhang - File not Found Java Basics - Anfänger-Themen 1
K Interface Kein Bild im .jar-File Java Basics - Anfänger-Themen 15
S Bild in Jar-File mit ImageIO Java Basics - Anfänger-Themen 50
Syncopated Pandemonium Compiler-Fehler The constructor MP3File(File) refers to the missing type NoMPEGFramesException Java Basics - Anfänger-Themen 7
S File mit canRead() testen Java Basics - Anfänger-Themen 4
A file.delete funktioniert nicht Java Basics - Anfänger-Themen 15
K Classpath Lesen von Property-File Java Basics - Anfänger-Themen 1
S jar file Java Basics - Anfänger-Themen 19
B Fragen zu ZIP-File Java Basics - Anfänger-Themen 9
B Dateityp von File bekommen Java Basics - Anfänger-Themen 2
I Automatisch Verzeichnis erstellen bei File erstellen Java Basics - Anfänger-Themen 5
E Große Datenmengen effizient in CSV File speichern Java Basics - Anfänger-Themen 4
I String zu File umwandeln Java Basics - Anfänger-Themen 2
N File virtuell ByteStream Java Basics - Anfänger-Themen 11
X Übergabeparameter Konstruktor (File) Java Basics - Anfänger-Themen 13
Anfänger2011 file.isDirectory() liefert falschen Wert!? Java Basics - Anfänger-Themen 1
ms_cikar Jar file mit resource erzuegen Java Basics - Anfänger-Themen 28
E lesen csv file column by column Java Basics - Anfänger-Themen 10
U Anhand von Ant ein War-File erstellen Java Basics - Anfänger-Themen 0
B Quellcode einelsen "line by line" (und abspeichern in file (txt) Java Basics - Anfänger-Themen 7
O Zip-File Inhalt einlesen Java Basics - Anfänger-Themen 3
V Erste Schritte Dateinamen aus einer FIle[] in eine List Java Basics - Anfänger-Themen 11
P Jar File Java Basics - Anfänger-Themen 3
B Probleme bei "Daten in CSV File schreiben". Java Basics - Anfänger-Themen 9
S CSV File - "Vergleichen und Sortieren" Java Basics - Anfänger-Themen 3
T Wieso kann ich das jar file nicht starten? Java Basics - Anfänger-Themen 5
S Resourcen-Dateien im Jar-File verfügbar machen (Intellij 14) Java Basics - Anfänger-Themen 14
A Wieso übergibt der nicht die bearbeitete txt file Java Basics - Anfänger-Themen 8
Ruvok Executable Jar File startet nicht Java Basics - Anfänger-Themen 3
R Ini File erstellen Java Basics - Anfänger-Themen 1
J file.lenght spinnt ab 50mb Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben