createTempFile erstellt keine temporäre Datei

S

Schuriko

Bekanntes Mitglied
In Anlehnung an https://www.java-forum.org/thema/sp...cation-properties-werten.189680/#post-1234743

habe ich mir eine Funktion erstellt
Code:
       String xmlUploadPath = this.appConfig.getXMLUploadPath();    // d:/tmp
                
        File f = new File( xmlUploadPath );
        
        if ( f.exists() )
            FileUtils.deleteDirectory(f);

        fileService.createXMLUploadPath();    // erstellt das Verzeichnis
        f = File.createTempFile("tmp", null, f);
Das Verzeichnis wird erstellt, aber createTempFile erstellt hierin keine temporäre Datei.
Sehe gerad nicht woran es liegen könnte.
 
L

LimDul

Top Contributor
Arg. Nicht gesehen.

Was heißt dann wird nicht erstellt? Ist das Objekt f dann null?
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Allerdings ist Files trotzdem sinnvoller, alleine schon weil es sinnvolle Exceptions kennt...
 
T

TM69

Bekanntes Mitglied
In Anlehnung an https://www.java-forum.org/thema/sp...cation-properties-werten.189680/#post-1234743

habe ich mir eine Funktion erstellt
Code:
       String xmlUploadPath = this.appConfig.getXMLUploadPath();    // d:/tmp
               
        File f = new File( xmlUploadPath );
       
        if ( f.exists() )
            FileUtils.deleteDirectory(f);

        fileService.createXMLUploadPath();    // erstellt das Verzeichnis
        f = File.createTempFile("tmp", null, f);
Das Verzeichnis wird erstellt, aber createTempFile erstellt hierin keine temporäre Datei.
Sehe gerad nicht woran es liegen könnte.
Hast du mal überprüft, ob das zu erstellende Verzeichnis auch schreibzugriff erlaubt?
als mit
Java:
        file.setExecutable(true, false);
        file.setReadable(true, false);
        file.setWritable(true, false);
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Hast du mal überprüft, ob das zu erstellende Verzeichnis auch schreibzugriff erlaubt?
In dem Fall wirft sogar die alte File-API mal eine Exception:
Java:
jshell> File.createTempFile("tmp",null,new File("/"))
|  Exception java.io.IOException: Read-only file system
 
S

Schuriko

Bekanntes Mitglied
Hast du mal überprüft, ob das zu erstellende Verzeichnis auch schreibzugriff erlaubt?
als mit
Java:
        file.setExecutable(true, false);
        file.setReadable(true, false);
        file.setWritable(true, false);
Wie gibt man bei NIOs createDirectory den Schreibzugriff, denn so an, dass in das Verzeichnis das Backend lesen und schreiben kann?
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Wie gibt man bei NIOs createDirectory den Schreibzugriff, denn so an, dass in das Verzeichnis das Backend lesen und schreiben kann?
Genauso wie alle anderen, die du gesetzt hast. Wenn du keine explizit selber setzt, hat der aktuelle Nutzer sowieso Schreib- und Lesezugriff.
 
S

Schuriko

Bekanntes Mitglied
Ich habe mir mal testweise ein eigenes kleines Java Projekt erstellt:
Java:
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.FileAttribute;
import java.nio.file.attribute.PosixFilePermission;
import java.nio.file.attribute.PosixFilePermissions;
import java.util.Set;

public class CreateDirectory {

    public static void main(String[] args) {
        Path path = Paths.get("D:/tmp/xml");
        //if directory exists?
        if (!Files.exists(path)) {
            try {
                Set<PosixFilePermission> perms = PosixFilePermissions.fromString("rwxr-x---");
                FileAttribute<Set<PosixFilePermission>> attr = PosixFilePermissions.asFileAttribute(perms);
                Files.createDirectory(path, attr);
            } catch (IOException e) {
                //fail to create directory
                e.printStackTrace();
            }
        }
     }

}

wenn ich es ohne die Permissions ausführe wird mir unter Windows 10 ein Verzeichnis erstellt, welches Schreibgeschützt ist und somit das obige erstellen von temporären Dateien verhindert.

Wenn ich aber die Permissions
Java:
Set<PosixFilePermission> perms = PosixFilePermissions.fromString("rwxr-x---");
                FileAttribute<Set<PosixFilePermission>> attr = PosixFilePermissions.asFileAttribute(perms);
dann wird mir während der Ausführung folgendes ausgegeben:
Exception in thread "main" java.lang.UnsupportedOperationException: 'posix:permissions' not supported as initial attribute
at java.base/sun.nio.fs.WindowsSecurityDescriptor.fromAttribute(WindowsSecurityDescriptor.java:358)
at java.base/sun.nio.fs.WindowsFileSystemProvider.createDirectory(WindowsFileSystemProvider.java:494)
at java.base/java.nio.file.Files.createDirectory(Files.java:694)
at CreateDirectory.main(CreateDirectory.java:19)
Ich habe es von hier https://docs.oracle.com/javase/tutorial/essential/io/dirs.html#create (Creating a Directory) übernommen. Ich verstehe einfach das Problem nicht und weis keine Lösung.

 
kneitzel

kneitzel

Top Contributor
PosixFileAttributes sind für Systeme, die nach Posix Art Rechte vergeben. Das sind hier Unix Systeme (incl. Mac OS).

Das PosixFileAttribute wird von Windows nicht unterstützt (Wieso eigentlich? Owner / Group mit entsprechenden Settings kennt Windows eigentlich auch alles ...). Unter Java wäre AclEntry zu nutzen, um einen ACL Eintrag zu setzen.
Das zeigt ein paar Beispiele. Das erste zeigt z.B. auch die Prüfung, ob es unterstützt ist und wenn nicht, dann wird ein ACL Eintrag für den Owner gesetzt...
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Code:
       String xmlUploadPath = this.appConfig.getXMLUploadPath();    // d:/tmp
               
        File f = new File( xmlUploadPath );
       
        if ( f.exists() )
            FileUtils.deleteDirectory(f);

        fileService.createXMLUploadPath();    // erstellt das Verzeichnis
        f = File.createTempFile("tmp", null, f);

Was hat denn nach dem Aufruf f für einen Wert? null? Oder zeigt das auf eine nicht existierende Datei?

Beide Fälle sollten nämlich ausgeschlossen sein, createTempFile prüft, dass eine neue, leere Datei erzeugt wurde. Eine Exception hättest du doch sicher erwähnt?
 
S

Schuriko

Bekanntes Mitglied
Was hat denn nach dem Aufruf f für einen Wert? null? Oder zeigt das auf eine nicht existierende Datei?

Beide Fälle sollten nämlich ausgeschlossen sein, createTempFile prüft, dass eine neue, leere Datei erzeugt wurde. Eine Exception hättest du doch sicher erwähnt?
Nein null ist er nicht. Der Fehler liegt in #10. Und zwar dass das Verzeichnis schreibgeschützt ist und somit verhindert das eine Datei hierin erstellt werden kann.
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Nein null ist er nicht. Der Fehler liegt in #10. Und zwar dass das Verzeichnis schreibgeschützt ist und somit verhindert das eine Datei hierin erstellt werden kann.
Wie ist die genaue Exception, die in dem
Codebeispiel in #1 fliegt?
Der Code in #10 ist erstmal egal, solange man den wirklichen Fehler aus #1 nicht kennt.

Gibt es in #1 denn überhaupt eine Exception?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
MasterEvil File.createTempFile liefert nur kurzen Pfad mit Tilde Allgemeine Java-Themen 3
Elyt Compiler-Fehler Datei kann nicht erstellt werden. Die Syntax für den Dateinamen etc. ist falsch. Allgemeine Java-Themen 2
coolian Swing erstellt fillreckt immmer ein neues object Allgemeine Java-Themen 13
A Java erstellt Script und konvertier zu EXE Allgemeine Java-Themen 4
MineJoke "Config" Datein wir bei neustart des Programms neu erstellt? Allgemeine Java-Themen 0
M Windows 98 - Mit welchem JDK (Version) kann noch Programm dafür erstellt werden Allgemeine Java-Themen 6
I Projekt wird nicht erstellt Allgemeine Java-Themen 2
G PrintWriter in .jar erstellt keine Datei Allgemeine Java-Themen 4
R Pdf öffnen, das von iText erstellt wurde Allgemeine Java-Themen 4
J Wie erstellt man die 'exe'-Dateien? Allgemeine Java-Themen 7
G Dateien löschen welche vor heute erstellt wurden? Allgemeine Java-Themen 7
T Thumbnails erstellt: Total schlechte Qualität: Allgemeine Java-Themen 2
O xlsx Datei auslesen mit POI Apache liest keine LEERZELLEN Allgemeine Java-Themen 6
C javax.mail.Message message.setreplyto() null setzen (keine replyto Adresse) Allgemeine Java-Themen 25
Thallius Keine Ahnung Allgemeine Java-Themen 15
M WSDL: Doppelte Typenames (Keine Verwendung möglich) Allgemeine Java-Themen 5
L JPA keine shared primary key Allgemeine Java-Themen 11
M Keine weitere Eingabe in der Main möglich. Eventueller Ansatz über while. Allgemeine Java-Themen 8
P Datenbank-MiniGUI fügt keine Daten ein Allgemeine Java-Themen 4
T Input/Output Konsole gibt trotz printf keine Umlaute aus Allgemeine Java-Themen 17
N Warum habe ich keine Spaltenüberschriften? Allgemeine Java-Themen 6
W Thread sleep 30 sekunden - wenn keine Antwort bis dahin neu senden Allgemeine Java-Themen 2
Thallius Bekomme keine Exception mit Stacktrace mehr. Was habe ich getan? Allgemeine Java-Themen 13
H jid3lib nach schreiben keine Tags im Folder angezeigt Allgemeine Java-Themen 1
0 Code startet nicht (Keine Warnung/Fehlermeldung) Allgemeine Java-Themen 4
A Swing FileWriter schreibt keine Daten in Datei Allgemeine Java-Themen 13
J Programm meldet "Keine Rückmeldung" nach Verbindung zum Server Allgemeine Java-Themen 4
Z Eclipse hängt sich alle paar Sekunden auf (Keine Rückmeldung). Allgemeine Java-Themen 4
Bluedaishi Input/Output Bluetooth Bondrucker MZ220 keine Verbindung Allgemeine Java-Themen 0
F Cardlayout prüfen ob schon vorhanden, keine doppelten Allgemeine Java-Themen 3
R Es gibt keine dummen Fragen (hab ich mal gehört) Allgemeine Java-Themen 11
M Eclipse Keine Ausgabe mehr bei Fehlern Allgemeine Java-Themen 3
S Java Applet Crash - Keine Exception Allgemeine Java-Themen 8
V Files mit Umlauten ergeben keine Größe Allgemeine Java-Themen 9
S Bekomme mit Scanner und URL keine Html-Seite ausgelesen Allgemeine Java-Themen 3
127.0.0.1 Subversion neues SVN Projekt, keine Main gefunden ?! Allgemeine Java-Themen 7
A Collections HashMap.containsKey findet keine immutablen Objekte Allgemeine Java-Themen 3
M keine Bilder in .jar-Datei (java) Allgemeine Java-Themen 23
D Chat - keine Schrift sichtbar Allgemeine Java-Themen 4
J Eclipse Elipse gibt mir keine Vorschläge mehr :( Allgemeine Java-Themen 6
S Objekte die Objekte enthalten: Keine Vererbung Allgemeine Java-Themen 4
S Tomcat java.util.logging - keine Logs Allgemeine Java-Themen 12
Guybrush Threepwood Warten, bis keine Taste gedrückt Allgemeine Java-Themen 11
S Keine NullPointerExceptions in nebenläufigen Threads Allgemeine Java-Themen 21
T Batch-File / keine Verbindung zur DerbyDB Allgemeine Java-Themen 3
O Zugriff auf Serielle Schnittstelle - Keine Ports gefunden. Allgemeine Java-Themen 8
X Warum kann ich keine ZIP Datein mit renameto() in was anderes benennen? Allgemeine Java-Themen 13
B warum keine nested blocks Allgemeine Java-Themen 2
GilbertGrape Jetty-Dienst startet keine Programme mit Oberfläche Allgemeine Java-Themen 2
S Keine Exception-Warning in Eclipse Allgemeine Java-Themen 3
D Warum keine Mehrfachvererbung? Allgemeine Java-Themen 5
tfa Keine Closures in Java 7 (?) Allgemeine Java-Themen 17
J Probleme wenn man keine serialVersionUID definiert? Allgemeine Java-Themen 27
F Kann man keine Arrays von generischen Typen erstellen? Allgemeine Java-Themen 2
G Javadoc generiert keine Links zu java.lang Klassen? Allgemeine Java-Themen 4
A ArrayListe :Doppelte entfernen -> keine Referenzen Allgemeine Java-Themen 26
ARadauer Random keine Zahlen doppelt Allgemeine Java-Themen 4
T Wieso erfolgt keine Ausgabe. /Excel Allgemeine Java-Themen 19
F GregorianCalendar wirft keine Fehler bei z.b. Monat 17 Allgemeine Java-Themen 3
G Jarfile gibt keine Textnachrichten aus Allgemeine Java-Themen 2
J java vnc client verbessern: KeyEvent.VK_ALT keine Wirkung? Allgemeine Java-Themen 12
J jar-Datei enthält keine Main-Class Allgemeine Java-Themen 22
N Keine Klassen startbar/mit Abhängigkeiten erstellbar Allgemeine Java-Themen 2
WMaerz Der neue JDK 6 enthält keine javac.exe, tool.jar usw. Allgemeine Java-Themen 6
P Webhosting-Paket unterstützt nur .war Dateien keine jsp Allgemeine Java-Themen 4
A Kann keine neue Klasse erstellen. Allgemeine Java-Themen 3
D TextPane nach Laden keine Styles Allgemeine Java-Themen 2
A JSP include - keine Fehlermeldung Allgemeine Java-Themen 2
H Vektoren nehmen keine neuen Werte an Allgemeine Java-Themen 5
N Applet übernimmt keine Änderungen Allgemeine Java-Themen 13
C Vier Stellen Keine Doppelt (Zufall) Allgemeine Java-Themen 20
N Euklidischer Algorithmus in Java und keine Terminierung. Allgemeine Java-Themen 7
C Java zeigt keine Fensterinhalte Allgemeine Java-Themen 3
G Leere Fenster (Keine Schrift, Reiter/ Buttons) bei Java Allgemeine Java-Themen 5
G woher installiertes JDK? (keine Adminrechte) Allgemeine Java-Themen 3
R keine sqrt methode für bigintegers? Allgemeine Java-Themen 14
D NullPointerException wo keine sein sollte. Allgemeine Java-Themen 2
0 Keine clone-Methode für BigDecimal und BigInteger? Allgemeine Java-Themen 3
C Sound: Keine Line gefunden. Zu großer internal buffer? Allgemeine Java-Themen 3
Y Comm-API findet keine Ports Allgemeine Java-Themen 5
B Keine Musik bei Applikation Allgemeine Java-Themen 9
H Kann keine Zahlen von Buchstaben unterscheiden Allgemeine Java-Themen 4
V Javadoc ertellt keine korrekten links Allgemeine Java-Themen 3

Ähnliche Java Themen

Anzeige

Neue Themen


Oben