file.renameto(File dist) -- false czy istnieje inna metoda..

Dyskusje na temat Javy.
gumbicp
Początkujący
Początkujący
Posty: 15
Dołączył(a): środa, 25 stycznia 2012, 08:47

file.renameto(File dist) -- false czy istnieje inna metoda..

Post przez gumbicp »

Mam problem ze zmianą nazwy typu pliku z plik.ods na plik.zip

Metoda z File --file.renameto(File dist) zwraca false.
Pracuje pod linuxem Ubuntu. Nie wiem czy to nie problem systemowy, znaczy czy mój program po prostu nie ma uprawnień
do zmiany nazwy pliku .
Zmieniałem już wszelkie ustawienia pliku.ods z poziomu terminalu ale to też nie pomogło.
Ta metoda to tylko jedna z wielu sposobów jakie już testowałem i wygrzebałem z netu ,ale wszystkie rozbiły się o ten problem.
kod metody :

Code: Zaznacz cały

    private void zmienODSnaZip() throws IOException 
    {
        File przyslany= new File(this.filePrzyslany.getName());
       
        System.out.println(przyslany.canWrite()); 
        
        int dotPos = filePrzyslany.getName().lastIndexOf ( "." ) ;
        String strExtension = filePrzyslany.getName().substring ( dotPos + 1 ) ;
        String strFilename = filePrzyslany.getName().substring ( 0 , dotPos ) ;
        String newfileExtension = "zip" ;
        String strNewFileName = strFilename + "." + newfileExtension;
        
        File newfile = new File ( strNewFileName ) ;
        boolean Rename = przyslany.renameTo ( newfile ) ;
        
         if ( !Rename )
         {
               System.out.println ( "nieudane" ) ;
         }
         else
         {
               System.out.println ( "udane" ) ;
         }
    }
A może istnieje inny sposób na rozpakowanie plik.ods tak aby się dobrać do pliku content.xml.
Z poziomu systemu to łatwe zmieniam tylko ods na zip i mogę już rozpakować archiwum .
A jak do tego dobrać się z poziomu kodu javy ?
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: file.renameto(File dist) -- false czy istnieje inna meto

Post przez Morfidon »

Spróbuj zamiast:

Code: Zaznacz cały

File newfile = new File ( strNewFileName ) 
to:

Code: Zaznacz cały

File newfile = new File ( "/home/usr/" + zipFileName ) 
oczywiście podmień usr etc. na odpowiednik.

http://www.lingala.net/zip4j/forum/inde ... opic=274.0
gumbicp
Początkujący
Początkujący
Posty: 15
Dołączył(a): środa, 25 stycznia 2012, 08:47

Re: file.renameto(File dist) -- false czy istnieje inna meto

Post przez gumbicp »

ok dziękuję bardzo ;)
Naprowadziło mnie to na rozwiązanie.
Działa ale trzeba zmienić kod w 2 miejscach na raz .Jako zmienna też pracuje :

Code: Zaznacz cały

  private String sciezkaSystemowa="/home/gumbicp/";

 File przyslany= new File(sciezkaSystemowa+this.filePrzyslany.getName());
i
 File newfile = new File (sciezkaSystemowa+ strNewFileName ) ;


Co rodzi kolejny problem :) ale to jest już do rozwiązania i przetestowania w moim zakresie tak aby ten kod działał na
innych kompach i systemach .
Ten link też dobra rzecz , dziękuje jeszcze raz za tak szybką odpowiedź.
Post Reply