R shinyFiles包Windows系统目录选择异常:无法查看D盘文件夹
解决shinyFiles在Windows系统无法访问盘符的问题
问题出在shinyDirChoose的roots参数配置上:Mac/Linux系统的根目录是/,但Windows系统的文件系统以盘符(如C:、D:)作为根,你原代码里的roots = c(wd = "/", home = "~")在Windows下无法识别盘符,导致找不到D盘。
修改方案
根据操作系统动态配置roots参数,自动适配Windows的盘符:
library(shiny) library(shinyFiles) ui <- shinyUI(bootstrapPage( shinyDirButton(id = 'folder', label = 'Folder select', title = 'Select a folder'), verbatimTextOutput('filepaths') )) server <- function(input, output){ # 根据系统配置根目录 if(Sys.info()["sysname"] == "Windows"){ # 获取Windows所有可用盘符 drives <- gsub("/", "", Sys.glob("?:/")) roots <- setNames(as.list(drives), drives) } else { # Mac/Linux保持原有配置 roots <- c(wd = "/", home = "~") } shinyFiles::shinyDirChoose(input, id = "folder", roots = roots) output$filepaths <- renderPrint(input$folder) } shinyApp(ui=ui, server=server)
关键说明
Sys.glob("?:/")会扫描Windows系统中所有存在的盘符(比如C:/、D:/),再处理成shinyFiles需要的格式。- 通过
Sys.info()["sysname"]判断当前系统,实现跨系统兼容,Mac/Linux环境下仍保持原有行为。 - 修改后在Windows系统中打开目录选择器,就能看到所有可用盘符,包括D盘,选择后可正常输出路径信息。
内容的提问来源于stack exchange,提问作者Wang
相关产品推荐
相关产品推荐

