Avatar billede scorp-d Nybegynder
11. maj 2009 - 15:56 Der er 6 kommentarer

Lås fil, og slet indhold efterfølgende.

Hej.


Jeg har en service(som jeg ikke selv har lavet) som står og leder efter filer den skal overføre og derefter slette.

I mit program forsøges der engang imellem at åbne de selv samme filer, og for at sikre at servicen ikke napper dem får jeg programmet til at låse filen:

private FileStream getFileLock(string filename)
{
FileStream fs;
    try
    {
          fs = new FileStream(filename, FileMode.Open, FileAccess.ReadWrite,FileShare.None);
    }
    catch
    {
            return null;
    }
      return fs;
}

Det fungere fint, da jeg kan se at servicen finder filen, men lader værre med at overføre & slette den.

Problemet er at programmet helst skal overskrive filen og ikke appende, og er bange for at servicen får fat i filen imellem jeg lukker FileStream'en og afvikler File.Delete på den.
En mulighed var at benytte FileMode.Truncate men så slettes filen selvom programmet ikke vil skrive til den, hvilket vil ske hyppigt.

Er der en måde hvorved jeg enten kan få en FileStream til at rydde en fil, eller overføre dens File-Permissions til noget som har mulighed for at overskrive/slette filen.

På forhånd tak.
Scorp-D
Avatar billede sirius Nybegynder
11. maj 2009 - 22:12 #1
Tror godt du kan bruge den filestream du allerede har..
Du kan bruge fs.SetLength(0) for at nulstille indholdet, og så derefter skrive det nye indhold.
Avatar billede scorp-d Nybegynder
11. maj 2009 - 22:47 #2
Har jeg prøvet og syndes bare den erstattede de tegn der var i filen med 0´er...

Læste et sted at det vist kom an på filsystemet.
Avatar billede sirius Nybegynder
12. maj 2009 - 10:26 #3
skal jeg ikke kunne sige, hos mig virker det (på ntfs)
Avatar billede speedy Nybegynder
12. maj 2009 - 16:22 #4
Prøv at bruge FileMode.Truncate i stedet for FileMode.Open.

Så sletter den selv indholdet før du skriver i den.
Avatar billede speedy Nybegynder
12. maj 2009 - 16:23 #5
Beklager, var for hurtig til at læse spørgsmålet :) Jeg kan se du selv har nævnt et problem med dette.
Avatar billede arne_v Ekspert
17. maj 2009 - 04:29 #6
Hvad sker der hvis du åbner filen som du gør og hvis du vil skrive så Seek'er du til starten af filen, skriver og hvis du skriver færre bytes end der var før så trunkerer du med SetLength metode,
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

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