Hi Georg, Your code does work, I mean, it doesn't give me any error message, which is critical for me because I need use it in a loop and plus I don't know how to catch error message. Before your message, I was using download.file but the loop was stopped because of the error message when a file doesn't exist. So I guess, the option "method=wget" made the difference.
To summarize (in case it is useful to others), there are (at least) two ways to download files: 1) Georg Ruß: v = download.file(url,destf,method="wget") if(v!=0) { #download.file failed } #no error message though 2) Henrique Dallazuanna and Steven Mosher both suggested using RCurl, here is an example code from Henrique for checking if a file exists on a server: " library(RCurl) h = basicHeaderGatherer() Lines <- getURI("http://www.pdb.org/pdb/files/2J0S.1001", headerfunction = h$update) h$value()[['status']] If the status is 404, then not found. If exists then status should be 200. " What a productive day! BC On Tue, Nov 30, 2010 at 1:34 PM, Georg Ruß <resea...@georgruss.de> wrote: > On 30/11/10 10:10:07, Baoqiang Cao wrote: >> I'd like to download some data files from a remote server, the problem >> here is that some of the files actually don't exist, which I don't >> know before try. Just wondering if a function in R could tell me if a >> file exists on a remote server? > > Hi Baoqiang, > > try downloading the file with R's download.file() function. Then you > should examine the returned value. > > Citing a part of ?download.file below: > >>> Value: >>> An (invisible) integer code, ‘0’ for success and non-zero for >>> failure. For the ‘"wget"’ and ‘"lynx"’ methods this is the status >>> code returned by the external program. The ‘"internal"’ method can >>> return ‘1’, but will in most cases throw an error. > > So if you call your download via > > v <- download.file(url, destfile, method="wget") > > and v is not equal to zero, then the file is likely to be non-existent (at > least the download failed). Note: the method "internal" doesn't really > change the value of v, I just tried that. With "wget" it returns "0" for > success and "2048" (or some other value) for non-success. > > Regards, > Georg. > -- > Research Assistant > Otto-von-Guericke-Universität Magdeburg > resea...@georgruss.de > http://research.georgruss.de > ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.