Forum: Ruby File deletion failed -- how to handle problem?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
31fdda5f38fc6df4e193cfb7445ddc5a?d=identicon&s=25 Richard (Guest)
on 2006-03-30 07:04
(Received via mailing list)
Hi All,

I wrote a simple test a techiques I'll apply in an app I'm going start
shortly.  One thing my test did is: -- -- open a non-existent file for
appending,
-- populate it
-- close it
-- open it for reading, expecting automatic closure when reading ended
-- looped through file printing its line to STDOUT
-- attempted to delete the file -- got "Permission denied -
TestOutput.txt (Errno::EACCES)"

I tested it under SciTE.

The relevant code fragment is listed below.  I think the problem is
that the file is in the process of being closed by WindowsXP-Pro when
the delete request hits the OS and the OS complains.

If that's correct,  all I have to do is write some loop that naps and
re-attempts the deletion until successful.  Is there better approach,
or is my analysis wrong in the first place?

********* Code fragment ****************
puts "\nDisplaying the content of #{fno}:"
puts "Opening #{fno}'"
File.open(fno, "r") do |file|		# Open for reading
	while sLine = file.gets
		puts sLine
	end
end # File will be closed automantically when scope of "do" exited
puts "#{fno} closed"

puts "\nDeleting #{fno}"
File.delete(fno)
*************************************************

TIA,
Richard
93d566cc26b230c553c197c4cd8ac6e4?d=identicon&s=25 Pit Capitain (Guest)
on 2006-03-31 13:21
(Received via mailing list)
Richard schrieb:
> ...
Richard, your code works for me, when I run it from the command line. I
haven't tried it with SciTE.

Regards,
Pit
23172b6630dc631a134c9bad2fec2a39?d=identicon&s=25 ChrisH (Guest)
on 2006-03-31 16:50
(Received via mailing list)
Worked for me:

ruby 1.8.2 (2004-12-25) [i386-mswin32]
SciTE Version 1.59
Aee77dba395ece0a04c688b05b07cd63?d=identicon&s=25 Daniel Berger (Guest)
on 2006-03-31 18:04
(Received via mailing list)
Richard wrote:
> Hi All,

<snip>


> 	end
> end # File will be closed automantically when scope of "do" exited
> puts "#{fno} closed"
>
> puts "\nDeleting #{fno}"
> File.delete(fno)
> *************************************************

It looks like you're passing around a fileno.  If that's the case, the
implication is that you've opened the filehandle somewhere else, but
haven't closed it.

Also, you're better off using IO.foreach(file) instead of the File.open
block you've got there.

Regards,

Dan
This topic is locked and can not be replied to.