[Rd] Non-recursive way to remove empty directory on Windows?
Martin Maechler
maechler at stat.math.ethz.ch
Fri Nov 30 12:51:59 CET 2012
>>>>> Martin Maechler <maechler at stat.math.ethz.ch>
>>>>> on Fri, 30 Nov 2012 11:47:07 +0100 writes:
>>>>> William Dunlap <wdunlap at tibco.com>
>>>>> on Thu, 29 Nov 2012 02:36:54 +0000 writes:
>>> (even worse, path may contain '..' or
>>> likewise from a list.files(all.names=TRUE) call)
>> Would anyone's code break if "." and ".." were never in the output of
>> list.files() (or dir())? I find it tedious to skip them
>> whenever doing anything recursive in the file system. They are
>> not in the output of the unix find command and no one misses them
>> there.
> At first, I've tended to agree with your implicit proposal.
> I wouldn't be suprised if someone's code broke from such a
> change, but then I think "Some One" gets what (s)he deserves ...
> But I'm less sure now that I've looked into the issue in more
> details:
> If you use
> (1) list.files(*, all.files=TRUE) # sic! 'all.names' does not exist
> you implicitly say 'recursive=FALSE' , where
> (2) list.files(*, recursive=TRUE, ...)
> implicitly contains 'include.dirs=FALSE'
> on which the help page says
> include.dirs: logical. Should subdirectory names be included in
> recursive listings? (There always are in non-recursive ones).
> {with a typo s/There/They/ which I've corrected just now}
> Hence, call (2) always excludes "." and ".."
> Would you reall see the need for an option to exclude "."
> and ".." also from the non-recursive calls?
well,... and inspite of the above question,
as I know Bill Dunlap's good judgement and as it appeared to be
nicely implementable, I've still provided such an option now (R-devel only) :
------------------------------------------------------------------------
r61184 | maechler | 2012-11-30 12:47:23 +0100 (Fri, 30 Nov 2012) | 1 line
Changed paths:
M doc/NEWS.Rd
M src/library/base/R/files.R
M src/library/base/man/list.files.Rd
M src/main/names.c
M src/main/platform.c
list.files() gains a new optional argument "no.."
------------------------------------------------------------------------
One might discuss if we should change the current
back-compatible default
from 'no.. = FALSE' to 'no.. = TRUE'
and someone may want to try to do that in R-devel *and* check
all of CRAN (and Bioconductor ?) to see if some package code
breaks because of such a change...
> Martin Maechler, ETH Zurich
>> Bill Dunlap
>> Spotfire, TIBCO Software
>> wdunlap tibco.com
>>> -----Original Message-----
>>> From: r-devel-bounces at r-project.org [mailto:r-devel-bounces at r-project.org] On Behalf
>>> Of Henrik Bengtsson
>>> Sent: Wednesday, November 28, 2012 6:25 PM
>>> To: R-devel
>>> Subject: [Rd] Non-recursive way to remove empty directory on Windows?
>>>
>>> Hi,
>>>
>>> file.remove(path) will remove an empty directory "on most Unix
>>> platforms", but not on Windows, cf. help("file.remove"). A workaround
>>> for Windows is then unlink(path, recursive=TRUE). However, unless
>>> you're really careful and make sure 'path' is not empty, you may
>>> delete more than you wish (even worse, path may contain '..' or
>>> likewise from a list.files(all.names=TRUE) call). Is there another
>>> *non-recursive* way to delete a single empty directory on Windows
>>> (without turning to system() calls)?
>>>
>>> Thanks,
>>>
>>> Henrik
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
More information about the R-devel
mailing list