windows - Hot for at slippe af med en java.io.Exception på java.io.WinNTFileSystem.createFileExclusively?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har for øjeblikket problemet med, at jeg støder på en undtagelse, jeg aldrig har set før, og det er derfor, jeg ved ikke, hvordan man håndterer det.


Jeg vil oprette en fil i henhold til givne parametre, men det vandt ikke.


public static Path createFile(String destDir, String fileName) throws IOException {
        FileAccess.createDirectory( destDir);

        Path xpath = new Path( destDir + Path.SEPARATOR + fileName);

        if (! xpath.toFile().exists()) {
            xpath.toFile().createNewFile();
            if(FileAccess.TRACE\_FILE)Trace.println1("<<< createFile " + xpath.toString() );
        }
      return xpath;
  }


  public static void createDirectory(String destDir) {
      Path dirpath = new Path(destDir);
      if (! dirpath.toFile().exists()) {
          dirpath.toFile().mkdir();
          if(TRACE\_FILE)Trace.println1("<<< mkdir " + dirpath.toString() );
      }
  }


Hver gang jeg kører min ansøgning opstår følgende undtagelse:


java.io.IOException: The system cannot find the path specified
at java.io.WinNTFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(Unknown Source)
[...]


Hvordan slipper jeg af med det? (Jeg bruger Win7 64bit btw)

Bedste reference


Problemet er, at en fil ikke kan oprettes, medmindre hele den indeholdte sti allerede eksisterer - dens umiddelbare overordnede mappe og alle forældre over det.


Hvis du har en vej c: \ Temp og ingen undermapper under den, og du forsøger at oprette en fil kaldet c: \ Temp \ SubDir \ myfile.txt, vil det mislykkes, fordi C: \ Temp \ SubDir ikke eksisterer.


Før


   xpath.toFile().createNewFile(); 


tilføje


   xpath.toFile().mkdirs(); 


(Jeg er ikke sikker på, om mkdirs () kræver bare stien i objektet, hvis det gør det, skal du ændre den nye linje til


   new File(destDir).mkdirs();


Ellers får du dit filnavn oprettet som en undermappe i stedet! Du kan kontrollere, hvilket er korrekt ved at tjekke din Windows Stifinder for at se, hvilke mapper den har oprettet.)