c# - File Still Locked Despite putting StreamReader in Using -
my program goes through files in folder, reads them, , without altering information moves them location under different name. cannot use file.move
method because following ioexception
:
the process cannot access file because being used process.
this how reading file , adding lines list<string>
:
list<string> lines = null; using (var fs = new filestream(filepath, filemode.open, fileaccess.read, fileshare.readwrite)) using (var sr = new streamreader(fs, encoding.default)) { lines = new list<string>(); while (!sr.endofstream) lines.add(sr.readline()); }
and function move file:
public static bool archivefile(string filepath, string archivefolderlocation) { if (!directory.exists(archivefolderlocation)) directory.createdirectory(archivefolderlocation); try { string timestamp = string.format("{0:yyyy-mm-dd hhmmss}", datetime.now); string newfilename = path.getfilenamewithoutextension(filepath) + " " + timestamp; string destination = string.format("{0}\\{1}{2}", archivefolderlocation, newfilename, path.getextension(filepath)); file.move(filepath, destination); return true; } catch (exception ex) { return false; } }
i thought using using
statement supposed garbage-collect , release file after being used. how can release file can move , why file stays locked?
solved:
got it. somewhere between these 2 calls opening textreader
object without disposing it.
i thought using using statement supposed garbage-collect , release file after being used. how can release file can move , why file stays locked?
not really. using statement nothing :
try { var resource = new someresource(); } { resource.dispose(); // not gc.collect(); }
it works fine looks file opened other place in code...
p.s. way can do:
list<string> lines = file.readalllines().tolist();
Comments
Post a Comment