09. oktober 2003 - 13:55
Der er
35 kommentarer og 1 løsning
Rename fil på disk
Hvis jeg nu har den fulde sti til en fil, eks: c:\noget\her.jpg og jeg skal have den omdøbt til c:\noget\noget.jpg hvordan gøres det lettest??? Kode eksempel, tak.
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
09. oktober 2003 - 14:00
#1
(new File("c:\noget\her.jpg")).renameTo("c:\noget\noget.jpg");
09. oktober 2003 - 14:02
#2
prøv med File herFile = new File ("c:\noget\her.jpg"); File copyFile = new File (c:\noget\noget.jpg"); boolean copieret = herFile.renamTo(copyFile);
09. oktober 2003 - 14:06
#3
europe har ret. Argumentet er også en File ikke en String. (new File("c:\noget\her.jpg")).renameTo(new File("c:\noget\noget.jpg")); i kompakt form. Sorry.
09. oktober 2003 - 14:24
#4
hvordan tilføjer man en \ til en strin????
09. oktober 2003 - 14:24
#5
string
09. oktober 2003 - 14:25
#6
dobbelt slash \\ Den første er en escape den anden bliver skrevet...
09. oktober 2003 - 14:26
#7
bare glem det...
09. oktober 2003 - 14:27
#8
Et eksempel på hvad den kan bruges til System.out.println("Dette skrives på\n 2 linjer"); Det kommer ud som følger Dette skrives på to linjer
09. oktober 2003 - 14:40
#9
Ups. Den missede jeg også. Enten \\ eller / (/ virker også på Windows !).
09. oktober 2003 - 14:44
#10
det virker ikke. Jeg bliver ved med at få false tilbage...
09. oktober 2003 - 14:46
#11
her er lidt af koden: File fil = new File(rs1.getString("Billede")); String sti = rs1.getString("Billede"); int index = sti.lastIndexOf(92); String nySti = ""; for(int i=0; i<index+1; i++) { nySti += sti.charAt(i); } nySti += ( request.getParameter("fabrikant") + " " + request.getParameter("navn") + ".jpg" ); this.getServletContext().log("Gammel sti: "+rs1.getString("Billede")); this.getServletContext().log("Sti: "+nySti); File nyFil = new File(rs1.getString("Billede")); boolean kopieret = fil.renameTo(nyFil); if (kopieret == false) { this.getServletContext().log("Servlet:AdminOpdater-Fejl-kunne ikke omdøbe navet på billede filen"); response.sendRedirect("/Admin/adminFejl.jsp"); }
09. oktober 2003 - 14:53
#12
Har du prøvet at skrive rs1.getString("Billede") ud for at se om det rent faktisk er en godkendt sti? For mig at se, ser det ud til at nyFil og fil er den samme.
09. oktober 2003 - 14:54
#13
File nyFil = new File(rs1.getString("Billede")); skulle muligvis være File nyFil = new File(nySti);
09. oktober 2003 - 14:55
#14
Gammel sti er: c:\resin-2.1.9\doc\Billeder\ATI Radeon 9700 Pro.jpg Ny sti er : c:\resin-2.1.9\doc\Billeder\ATI Redeon 9700 Pro.jpg Eneste forskel er Radeon > Redeon
09. oktober 2003 - 14:59
#15
File fil = new File(rs1.getString("Billede")); String sti = rs1.getString("Billede"); int index = sti.lastIndexOf(92); String nySti = ""; for(int i=0; i<index+1; i++) { nySti += sti.charAt(i); } nySti += ( request.getParameter("fabrikant") + " " + request.getParameter("navn") + ".jpg" ); this.getServletContext().log("Gammel sti: "+rs1.getString("Billede")); this.getServletContext().log("Ny sti: "+nySti); File nyFil = new File(nySti); boolean kopieret = fil.renameTo(nyFil); if (kopieret == false) { this.getServletContext().log("Servlet:AdminOpdater-Fejl-kunne ikke omdøbe navet på billede filen"); response.sendRedirect("/Admin/adminFejl.jsp"); } Giver stadig false...
09. oktober 2003 - 15:02
#16
Har lige checket lidt - det viser sig at den fil som man kopier til ikke må indeholde mellemrum prøv med _ istedet - bare for at se at det er det der er galt...
09. oktober 2003 - 15:06
#17
nySti += ( request.getParameter("fabrikant") + " " + request.getParameter("navn") + ".jpg" ); nySti.replaceAll(" ", "_"); stadig false...
09. oktober 2003 - 15:08
#18
Nu har du retigheder til at ændre navnet på filen ?
09. oktober 2003 - 15:09
#19
For det ser rent faktisk ud til at mellemrum er klaret alligevel det var en dumme fejl her fra....
09. oktober 2003 - 15:11
#20
nySti = nySti.replaceAll(" ", "_"); sådan selvfølgelig men det virker heller ikke stadig false...
09. oktober 2003 - 15:12
#21
hvis jeg ikke har rettighederne ville den give en SecurityException og den kommer ikke.
09. oktober 2003 - 15:23
#22
Problemet kunne ligge i hvis nyFil.exists() == true Så kan den ikke renames til denne file. Dvs. at den allerede existere...
09. oktober 2003 - 15:24
#23
det gør den ikke. Har tjekket...
09. oktober 2003 - 15:25
#24
Ja og selvfølgelig så findes den fil der prøves at rename.. Du kan godt høre at jeg er ved at være på barbund ik'!!!
09. oktober 2003 - 15:30
#25
jo, det kan jeg godt høre, men det må sku kunne lade sig gøre. Prøver lige at fuske lidt...
09. oktober 2003 - 15:43
#26
Tjek lige det her ud. Det virker sku. Det er fordi der skal være / istedet for \. try { File fil = new File("c:/noget.jpg"); File nyFil = new File("c:/bla.jpg"); boolean kopieret = fil.renameTo(nyFil); System.out.println("Succes: "+kopieret); } catch(Exception e) { System.out.println("fejl: "+e); }
09. oktober 2003 - 15:45
#27
Bare for god ordens skyld kunne jeg godt tænke mig at du skrev følgende ind før du prøvede at rename filen. this.getServletContext().log("gamFil exister "+fil.exists()); this.getServletContext().log("gamFil canWrite "+fil.canWrite()); this.getServletContext().log("nyFil exister "+nyFil.exists()); this.getServletContext().log("nyFil canWrite "+nyFil.canWrite()); Og poste resultatet her - så skal jeg se om jeg kan finde noget når jeg kommer hjem...
09. oktober 2003 - 15:46
#28
Okay - kanon fejlen fundet ... WEEEEHEEEE
09. oktober 2003 - 15:47
#29
Kører du på en unix maskine ?
09. oktober 2003 - 15:48
#30
nope - windows
09. oktober 2003 - 15:57
#31
Følgende virker ikke: gaSti = gaSti.replaceAll("\\", "/"); Hvordan skal det så gøres???
09. oktober 2003 - 16:04
#32
Prøv med: gaSti = gaSti.replaceAll("\\\\", "/");
09. oktober 2003 - 16:04
#33
prøv med -- kender ikke replaceAll() while(gaSti.indexOf("\\")!=-1) { gaSti = gaSti.replace((char)92,(char)47); }
09. oktober 2003 - 16:05
#34
Char 92 svar til \ og char 47 svar til /
09. oktober 2003 - 16:34
#35
Det endte med det her og det virker... String gaSti = getServletConfig().getServletContext().getRealPath("Billeder/"+rs1.getString("Fabrikant")+" "+rs1.getString("Navn")+".jpg"); while(gaSti.indexOf("\\")!=-1) { gaSti = gaSti.replace((char)92,(char)47); } File fil = new File(gaSti); String nySti = getServletConfig().getServletContext().getRealPath("Billeder/"+request.getParameter("fabrikant")+" "+request.getParameter("navn")+".jpg"); File nyFil = new File(nySti); boolean kopieret = fil.renameTo(nyFil); if (kopieret == false) { this.getServletContext().log("Servlet:AdminOpdater-Fejl-kunne ikke omdøbe navet på billede filen"); response.sendRedirect("/Admin/adminFejl.jsp"); }
09. oktober 2003 - 16:43
#36
jeg synes alligevel at du skal have nogle point >europe for at have hjulpet mig igennem. Opretter lige et nyt spørgsmål til dig...
Kurser inden for grundlæggende programmering