Avatar billede kristianp Nybegynder
02. november 2001 - 11:48 Der er 11 kommentarer og
1 løsning

Ændre navnet på en file med File

Jeg har en zip fil der indeholder en xml fil.
Jeg parser file og når jeg er færsig med at parse skal zip filens navn ændres med et time stamp, men jeg kan ikke få den til at ændre navnet


file = new File(test.zip);

..parser

newFileName = new File(\"0\" + fileName);
file.renameTo(newFileName);

Jeg får ikke nogen SecurityException, og der er write acces til file objektet.

renameTo returnere bare false = det lykkedes ikke

Avatar billede disky Nybegynder
02. november 2001 - 11:51 #1
prøv dette her:

String fileName=\"test.zip\";
file = new File(fileName);

// ..parser

newFileName = new File(\"0\" + fileName);
file.renameTo(newFileName);

Avatar billede kristianp Nybegynder
02. november 2001 - 12:02 #2
Det er det samme !!!!

Der er dog ikke write access til newFileName objeket, men jeg kan ikke lige se at det skulle være nødvendigt.

Java doc siger

renameTo
public boolean renameTo(File dest)Renames the file denoted by this abstract pathname.
Parameters:
dest - The new abstract pathname for the named file
Returns:
true if and only if the renaming succeeded; false otherwise
Throws:
SecurityException - If a security manager exists and its SecurityManager.checkWrite(java.io.FileDescriptor) method denies write access to either the old or new pathnames
NullPointerException - If parameter dest is null
Avatar billede disky Nybegynder
02. november 2001 - 12:03 #3
har du rettigheder til at ændre fil navnet, jeg tænker på OS niveau ?
Avatar billede kristianp Nybegynder
02. november 2001 - 12:05 #4
file.canWrite() returnere true. Er det ikke sådan man tjekker det
Avatar billede disky Nybegynder
02. november 2001 - 12:08 #5
jo det skulle jeg mene.

Prøv også det på \'test.zip\'
Avatar billede kristianp Nybegynder
02. november 2001 - 12:14 #6
referencen \'file\' peger på test.zip.

dog siger newFileName.canWrite() false.

Det kan være den skal være true, hvorfor ved jeg nu ikke, jeg skal jo ikke skrive til den, det er jo bare et File objekt der ikke peger på nogen fysisk fil.
Avatar billede disky Nybegynder
02. november 2001 - 12:17 #7
Hvis du ikke har skrive adgang på det sted hvor filerne ligger, kan du jo heller ikke ændre deres navn, da det kræver skrive adgang.
Avatar billede kristianp Nybegynder
02. november 2001 - 12:34 #8
Jeg har jo netop skrive adgang til den fil jeg vil ændre navnet på, iflg file.canWrite() der returnere true.
Avatar billede disky Nybegynder
02. november 2001 - 12:35 #9
mystisk.

Avatar billede disky Nybegynder
02. november 2001 - 12:45 #10
Denne her virker:

Hvis den ikke går hos dig er det et rettigheds problem :(

/*
* Rename.java
*
* Created on 2. november 2001, 12:38
*/

import java.io.*;

/**
*
* @author  srr
* @version
*/
public class Rename
{
   
    /** Creates new Rename */
    public Rename()
    {
        File old=new File(\"c:\\\\old.txt\");
        File ny=new File(\"c:\\\\0\"+old.getName());
       
        old.renameTo(ny);
    }
   
    /**
    * @param args the command line arguments
    */
    public static void main(String args[])
    {
        new Rename();
    }
   
}
Avatar billede kristianp Nybegynder
02. november 2001 - 14:50 #11
Nu virker det. her er lige et udsnit af koden.
Jeg havde glemt linien zipFile.close();



ZipFile zipFile = null;
ZipEntry zipEntry = null;
InputStream is = null;
File file = null;
File newFileName = null;

for (int i=0; i<filesToParse.size(); i++) {
  fileName = (String)filesToParse.get(i);
  file = new File(fileName);
  zipFile = new ZipFile(file);
  zipEntry = new ZipEntry(fileName.substring (0, fileName.lastIndexOf(\".\")) + \".xml\");
  is = zipFile.getInputStream(zipEntry);       
  parser.parse(is);

  is.close();
  zipFile.close();

  newFileName = new File(getDateTime() + \"_\" + file.getName());
               
file.renameTo(newFileName);
}
Avatar billede disky Nybegynder
02. november 2001 - 14:50 #12
glædeligt det kom til at virke :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester