Schreibschutz entfernen und OutputStream öffnen

Status
Nicht offen für weitere Antworten.

m@nu

Bekanntes Mitglied
hallo!

und wiedermal hab ich ein kleines problem.
ich nutze folgenden code um einen OutputStream auf eine datei zu öffnen.
ist die datei schreibgeschützt, entferne ich diesen per getRuntime().exec (jop, ich weis... nicht mehr OS unabhängig :( )

Code:
    public OutputStream getTransferTarget(final FileDescriptor fileDescriptor) throws PluginSyncException {
        /* Vorbereiten: */
        String localFile = PluginHelper.fileDescriptorToAbsolutePath(fileDescriptor, path);
        OutputStream stream = null;
        File file = new File(localFile);
        
        try {
	        /* Datei prüfen: */
	        if(!file.exists()) {
                // Falls nötig, leere Datei erstellen:
	            file.createNewFile();
	            
	        } else {
	            // Schreibschutz entfernen (falls nötig):
	            if(!file.canWrite()) {
	                Runtime.getRuntime().exec("cmd /c attrib -R \"" + localFile + "\"");
		        }
	        }
	        
	        /* Stream holen: */
	        stream = new FileOutputStream(localFile);
        
        } catch (IOException e) {
            throw new PluginSyncException(PluginSyncException.msgERROROPENOUTPUTSTREAM,
                    fileDescriptor);
        }
        
        /* Rückgabe: */
        return stream;
    }

nun scheint java aber noch nicht ganz zu raffen, dass der schreibschutz entfernt wurde... ich erhalte eine IOException.
ziehe ich den explorer zu rate, sehe ich, dass der schreibschutz entfernt wurde.
ich denke per sleep könnte man da was machen, finde ich aber eine unschöne lösung.

kennt jemand das problem oder hat anregungen zu einer lösung?
viele dank & grüsse aus der schweiz
m@nu
 

Jockel

Top Contributor
Keine Ahnung, aber könnte es sein, dass die Attribute nur beim Öffnen der Datei ausgelesen werden und ein schließen und erneutes Öffnen abhilfe schafft?
 
G

Gast

Gast
Man muss auch dann gucken, wann die JVM den Befehl wirklich ausführt. Für dies hier weiß ich nicht, aber eine Datei löschen wird ja z.B. erst beim Beenden der JVM, nach ende des Java-Programms ausgeführt.
(Hier natürlich nicht, man braucht ja die Daten)
 

m@nu

Bekanntes Mitglied
@Jockel: hab versucht eine neue File-instanz nach dem ausführen des befehls zu erstellen... hat keine änderung gebracht.

@Gast: die JVM führt den befehl aus...
wenn ich z.b. im debugger einen breakpoint auf ne zeile nach dem runtime-aufruf setze, und im explorer die datei prüfe, ist das readonly-flag weg...
 

Bleiglanz

Gesperrter Benutzer
versuch mal lieber
Code:
Process p = Runtime.getRuntime().exec("cmd /c attrib -R \"" + localFile + "\""); 
if(0==p.exitValue())...
//oder p.waitFor();

ist möglicherweise in klitzekleines timing problem, weil bei dir SOFORT die Datei zum schreiben geöffnet werden soll
 

m@nu

Bekanntes Mitglied
hey cool! super, es funktioniert :)
wie oben geschrieben, ich dachte mir schon dass es da probs mit dem timing gibt... aber diese lösung is schöner als per wait einfach mal ein paar sekunden blaue zu warten

*grml* hät' mir eigentlich nur die api vom Runtime/Process angucken müssen ;)

danke schön!
 
Hi ...

gibt es denn wirklich keine Methode in Java, die den Schreibschutz wieder aufhebt? Muss ich wirklich auf das jeweilige Zielsystem zurückgreifen????

Marcus
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Für eine Datei einen Schreibschutz festlegen.:( Allgemeine Java-Themen 6
I strip-debug - debug-Infos aus mitgelieferter Lib entfernen Allgemeine Java-Themen 3
E Hall vom Clip entfernen Allgemeine Java-Themen 5
OnDemand Teile eines Links entfernen Allgemeine Java-Themen 6
TheSepp Wie kann man Leerzeichen aus einer Array liste entfernen? Allgemeine Java-Themen 10
killig Textdatei einlesen und in HashMap speichern (duplikate entfernen) Allgemeine Java-Themen 12
J Spieler aus der Spielerliste zu entfernen Allgemeine Java-Themen 0
J Spieler aus der Spielerliste entfernen in dem Spiel 17und 4 Allgemeine Java-Themen 2
C Koordinaten LONG/LAT eines neuen Punktes in bestimmter Entfernen und Winkel berechnen Allgemeine Java-Themen 3
Kingamadeus2000 Alle mehrfach vorkommenden Buchstaben rekursiv aus einem String entfernen. Allgemeine Java-Themen 6
R char aus String entfernen Allgemeine Java-Themen 10
J Wie kann ich von Vornherrein einen Fokus auf ein Objekt entfernen? Allgemeine Java-Themen 3
Y ArrayListe eingegebenen index entfernen Allgemeine Java-Themen 1
S Inlining erzwingen kombiniert mit Entfernen von Imports..? Allgemeine Java-Themen 11
G JFileChooser Fokus entfernen?! Allgemeine Java-Themen 15
Neumi5694 Compiler-Fehler Konstanten entfernen während des Kompiliervorgangs Allgemeine Java-Themen 7
S Methoden "Unschöne" Break-Anweisung aus verschachtelter Funktion entfernen Allgemeine Java-Themen 11
KeVoZ_ JSoup - HTML Tag entfernen Allgemeine Java-Themen 1
mrBrown Unicode-WhiteSpaces aus String entfernen Allgemeine Java-Themen 14
S Abhaengigkeiten auf Klassenebene entfernen..? Allgemeine Java-Themen 7
T ArrayList zeilenumbruch entfernen Allgemeine Java-Themen 13
J Pattern aus String entfernen Allgemeine Java-Themen 2
R Duplikate aus einer Textdatei entfernen? Allgemeine Java-Themen 20
K Input/Output störende Leerzeichen entfernen Allgemeine Java-Themen 11
J Typecast entfernen Allgemeine Java-Themen 7
S Entfernen von allen Nicht-Buchstaben chars aus einem String ohne Regex..? Allgemeine Java-Themen 10
T Hardware sicher entfernen Allgemeine Java-Themen 8
M Mehrere CRLF entfernen Allgemeine Java-Themen 13
Q "Doppelte" Einträge einer Liste entfernen Allgemeine Java-Themen 14
T Swing JTextAera Zeilenumbruch entfernen Allgemeine Java-Themen 7
X Chinesische Schriftzeichen aus String entfernen Allgemeine Java-Themen 6
T JRE komplett von einem PC entfernen? Allgemeine Java-Themen 5
J Schlüsselwörter entfernen - Wo / wie am performantesten? Allgemeine Java-Themen 3
M Klasse aus xyz.class Datei laden / package entfernen? Allgemeine Java-Themen 4
L-ectron-X Regex zum Entfernen von mehrzeiligen Kommentaren Allgemeine Java-Themen 2
E Html tags entfernen optimieren Allgemeine Java-Themen 12
G Element aus Liste entfernen Allgemeine Java-Themen 6
X Duplikate aus eigenen Datentypen entfernen Allgemeine Java-Themen 14
C Zeilenumbruch aus JTextArea entfernen Allgemeine Java-Themen 6
T Element aus Vector entfernen Allgemeine Java-Themen 4
G Mit JarSigner erstellte Signierung entfernen Allgemeine Java-Themen 8
hdi text durchsuchen -> satzzeichen entfernen Allgemeine Java-Themen 5
C Satzzeichen aus String entfernen Allgemeine Java-Themen 6
S Anonymen MouseListener entfernen? Allgemeine Java-Themen 2
R Entfernen der '..' Notation aus dem Pfad Allgemeine Java-Themen 2
G führende nullen entfernen Allgemeine Java-Themen 14
A ArrayListe :Doppelte entfernen -> keine Referenzen Allgemeine Java-Themen 26
A Leerzeichen entfernen Allgemeine Java-Themen 3
G HTML Code aus String mittels REGEX entfernen Allgemeine Java-Themen 2
L Whitespace in einer html Site entfernen Allgemeine Java-Themen 10
M Elemente aus Liste entfernen? Allgemeine Java-Themen 7
T Duplikate aus ArrayList entfernen Allgemeine Java-Themen 2
G zeilenummern entfernen Allgemeine Java-Themen 9
G Hashset einen eintrag zufällig entfernen Allgemeine Java-Themen 4
B Entfernen von Zeilen/Spalten aus einer Matrix Allgemeine Java-Themen 8
T - Zeilenumbruch entfernen Allgemeine Java-Themen 2
byte Erste Zeile einer Textdatei entfernen Allgemeine Java-Themen 5
J sonderzeichen entfernen Allgemeine Java-Themen 6
G Leerzeichen entfernen unter 1.3.x Allgemeine Java-Themen 5
C GC: Referenz entfernen Allgemeine Java-Themen 6
F Dateigröße eines entfernen Images ermitteln Allgemeine Java-Themen 3
W Mal ein paar generelle Fragen zu InputStream und OutputStream Allgemeine Java-Themen 4
T Input und Outputstream , serielle Schnittstelle Allgemeine Java-Themen 1
Meeresgott Input/Output OutputStream löscht Datei Allgemeine Java-Themen 7
F Jar OutputStream Allgemeine Java-Themen 4
T Outputstream write() gets blocked using RXTX to communicate with HC-05 BT Module Allgemeine Java-Themen 10
D Java Process OutputStream ist null Allgemeine Java-Themen 4
P Input/Output Process.getErrorStream = OutputStream Allgemeine Java-Themen 11
G Auf Kommandozeile über Processobjekt mit Outputstream Allgemeine Java-Themen 3
M rxtx OutputStream sendet falsche werte Allgemeine Java-Themen 3
L Abspeichern von OutputStream Allgemeine Java-Themen 6
E Outputstream an verschiedenen Positionen beschreiben Allgemeine Java-Themen 4
A Eigenen OutputStream schreiben und verwenden Allgemeine Java-Themen 9
D zip Dateien schreiben mit in/outputstream Allgemeine Java-Themen 10
S OutputStream via POST senden Allgemeine Java-Themen 4
T OutputStream to InputStream Allgemeine Java-Themen 8
W StringBuilder effektiv auf OutputStream schreiben Allgemeine Java-Themen 3
Landei CipherInput/OutputStream-Problem Allgemeine Java-Themen 2
S von OutputStream in InputStream schreiben ohne das es blockiert..? Allgemeine Java-Themen 2
G Double Wert über OutputStream verschicken Allgemeine Java-Themen 2
S outputstream über fileUrl Allgemeine Java-Themen 15
L Problem mit dem OutputStream eines Prozesses Allgemeine Java-Themen 9
G OutputStream to System.out Allgemeine Java-Themen 35
I input-/outputstream Allgemeine Java-Themen 6
Junktyz In Writer und Outputstream wird teilweise nicht geschrieben Allgemeine Java-Themen 3
reibi FileOutputStream aus OutputStream erstellen Allgemeine Java-Themen 7
H Problem mit OutputStream Allgemeine Java-Themen 5
T OutputStream - Prozente ermitteln Allgemeine Java-Themen 3
T OutputStream - Event bei Byte-Fluss Allgemeine Java-Themen 5
A Inputstream in Outputstream umleiten Allgemeine Java-Themen 7
D Cipher(In)OutputStream Allgemeine Java-Themen 3
R Ladebalken für einen Outputstream. Allgemeine Java-Themen 10
J Binärdateien mit Input/Outputstream lesen und schreiben Allgemeine Java-Themen 3
T Problem mit Outputstream? Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben