Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[C#] FileInfo.CopyTo lijkt bestand vast te houden

Pagina: 1
Acties:

  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 14-11 14:17

Jaspertje

Max & Milo.. lief

Topicstarter
Allen,

Ik probeer een bestand te kopieren (met FileInfo.copyTo) en daarna in een zip bestand te zetten (via Process met winrar).
Als ik dit achter elkaar uitvoer, dan wordt er geen zip gemaakt. Kopieer ik eerst het bestand en in een later process zip ik het geheel, dan wordt er wel een zipbestand aangemaakt. De volgende code:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
FileInfo logo = new FileInfo(@"c:\temp.jpg");
logo.Attributes = FileAttributes.Normal;
                
FileInfo newLogo = new FileInfo(@"c:\temp\temp1.jpg");
                
logo.CopyTo(newLogo.FullName);
newLogo.Attributes = FileAttributes.Normal;
newLogo = null;

//Thread.Sleep(50000);

Process process = new Process();
ProcessStartInfo processinfo = new ProcessStartInfo(Settings.Default.winrar_location);
//Rar the files
string filename = "zipfile.zip";

processinfo.Arguments = string.Format(@"a ""{0}"" -ep1 ""c:\temp"" ", filename);

process.StartInfo = processinfo;
process.Start();
process.WaitForExit();

Als ik dit in een keer run, dan wordt er geen image aangemaakt. Run ik het los van elkaar, dus wel. Ik heb al geprobeerd om er een timer tusser te zetten (50 sec. wachten) maar dat mag niet baten. Het zippen werkt wel, want in het hele process worden nog meer bestanden in de map gezet en zonder het image wat gekopieerd wordt, werkt het wel.
Ook heb ik al een log proberen aan te maken dmv het -ilog attribuut, maar dat geeft niets terug.

De mappen in bovenstaande voorbeeld bestaan dus daar zit het probleem zeker niet, het lijkt dus ergens in het FileInfo te zitten die het bestand vast houdt, maar ik kan het nergens vrijgeven (newlogo = null; werkt niet).

Heeft iemand een idee?

offtopic:
Uitteraard klopt het originele script wel, maar daar wordt de naamgeving niet hard gezet maar is het variabel, dus de ;'s staan in de orignele code wel :)

[ Voor 5% gewijzigd door Jaspertje op 28-03-2008 10:17 ]


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 16:28

TeeDee

CQB 241

regel 15 en 17 kloppen niet. Daar krijg je sowieso een error op ;)

En als je eens gewoon File.Copy gebruikt ipv FileInfo?

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 14-11 14:17

Jaspertje

Max & Milo.. lief

Topicstarter
TeeDee schreef op vrijdag 28 maart 2008 @ 10:04:
regel 15 en 17 kloppen niet. Daar krijg je sowieso een error op ;)

En als je eens gewoon File.Copy gebruikt ipv FileInfo?
C#:
1
2
3
FileInfo logo = new FileInfo(LogoUrl);
                string newlogoName = Path.Combine(@"c:\temp", string.Format(@"images\{0}", logo.Name));
                File.Copy(LogoUrl, newlogoName, true);
Dit geeft hetzelfde resultaat, dus er wordt nogsteeds geen zip gecreeerd... (Het bestand wordt wel gekopieeerd

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 20:22
Wordt er geen exception gegooid?
Stap eens met de debugger over de File.Copy heen en kijk met process explorer of er een proces is dat het bestand in gebruik houdt?

[ Voor 85% gewijzigd door sig69 op 28-03-2008 10:40 ]

Roomba E5 te koop


  • L-VIS
  • Registratie: April 2005
  • Laatst online: 10:38
Bestaat het bestand niet toevallig al?

  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 14-11 14:17

Jaspertje

Max & Milo.. lief

Topicstarter
Ok, ik heb de oplossing gevonden. Ik had een tester gemaakt die ook alleen bovenstaande deed, en daar werkte het wel.. Het enige wat ik anders gedaan had, was de locatie van de zip. In de originele code stond daar
string filename = String.Format("{0}.zip", "Naamvanhetbestand");
Als ik daar
string filename = String.Format(@"{0}\{1}.zip", System.Windows.Forms.Application.StartupPath, "Naamvanhetbestand");
van maak, dan werkt het wel altijd... Zal dus niets met File.Copy of FileInfo.CopyTo te maken hebben maar met winrar...

En ik heb nu ook gevonden waar het bestand wel neergezet werd... Op de locatie waar het image bestand vandaan kwam.... dus niet in de root van de applicatie maar waar het image vandaan komt.... (Misschien had ik toch beter moeten zoeken en altijd complete paden gebruiken :))

[ Voor 20% gewijzigd door Jaspertje op 28-03-2008 10:51 ]


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 20:22
Waarom gebruik je eigenlijk niet een mooie zip library zoals SharpZipLib?
Of een GZipStream, ook een mogelijkheid. Dat is een mooiere oplossing dan een extern proces starten.

Roomba E5 te koop

Pagina: 1