09. juni 2006 - 13:47Der er
11 kommentarer og 1 løsning
Check om en anden process "holder" på fil der skal læses.
Jeg er ved at arbejde med et program der skal læse nogle indholdet af nogle filer i en mappe, som jævnligt får tilført nye filer.
Problemet er bare, at jeg ikke ved om disse filer er i brug af en anden process, som ikke nødvendigvis låser filerne for læsning.
Er det muligt at finde ud af, om en anden process har fat i den fil, som jeg gerne skal læse HELE indholdet af, og altså ikke kun det indhold som den anden process har fået skrevet indtil det tidspunkt hvor jeg læser filen...
Som det er lige nu, så kan jeg i visse tilfælde få læst f.eks. halvdelen af en fil, fordi den ikke er skrevet færdig af et andet eksternt program.
den vil fortælle dig hvornår der sidst blev skrevet i filen. Måske kan du sætte en tidsparameter op, til hvor gammel en fil skal være før du læser den?
Så vidt jeg har testet, så bliver GetLastWriteTime kun opdateret når man starter eller slutter med at skrive til en fil. Så hvis vi tager en situation hvor et program f.eks. skriver en meget stor fil i ét hug, så vil GetLastWriteTime blive ved med at vise start-tidspunktet, og altså ikke blive opdateret løbende mens filen skrives...
Det er da en mulighed at vente "længe nok", eller løbende checke på om filstørrelsen bliver ved med at ændre sig, men jeg syntes ikke det er nogen helt optimal løsning.
Det ser ud til at FileShare.None virker. Jeg troede ellers kun den havde nogen betydning når man skulle skrive til en fil, men umiddelbart i de tests jeg har lavet, ser det ud til at den også fungerer som en slags "exclusive read lock", når man bruger en FileStream til at læse filen med.
Det er noteret. I den sammenhæng jeg skal bruge den er det dog okay med den opførsel, da de programmer der skriver filerne i mappen altid vil skrive dem i et hug og så slippe filerne.
det er formentligt fordi Word netop ikke holder filen aaben
open read close lad bruger redigere open write close
er meget svaer at detecte fra et andet program !
(for Word kan man vistnok kigge efter backup/work filen den med tilde i)
Synes godt om
Ny brugerNybegynder
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.