RStudio 无法打开某些文本文件
RStudio won't open some text files
最近我在使用 RStudio 时遇到了一个奇怪的问题(Ubuntu 18.04 上的 v1.3.1056):当我尝试打开一些文本文件时,RStudio 拒绝消息 file is binary rather than text
:
但是,我要打开的文件肯定是文本文件。以这个 bibtex 文件为例:
@misc{test,
author = {test},
year = {2018},
title = {test},
}
当我尝试用文件名“test.bib”打开它时,出现上述错误。将其重命名为“test.txt”时,RStudio 会毫无怨言地打开它。这里的步骤为R
代码:
rstudioapi::navigateToFile("test.bib") # won't work
file.copy("test.bib", "test.txt", overwrite = TRUE)
rstudioapi::navigateToFile("test.txt") # works perfectly
我很确定 RStudio 不会介意文件结尾,无论过去如何,它都会尝试以文本形式打开文件。但是现在我要么必须重命名文件,要么使用不同的文本编辑器来编辑我的围兜和其他文件。
据我所知,这不是 Ubuntu 将文件标记为二进制文件的问题。否则这些命令之一会抱怨,我认为:
readLines("test.bib")
system("grep 'misc' test.bib")
您可以在此处查看当前文件是否为文本的测试:https://github.com/rstudio/rstudio/blob/d1289249b11e0d12d2be12b3ceb701c41f110cec/src/cpp/session/SessionModuleContext.cpp#L1216。它根据文件扩展名查找记录的 MIME 类型(.bib
当前不在列表中,因此会失败)。
然后它会尝试 运行
file --dereference --mime --brief test.bib
然后查看结果。也许您的系统无法将 test.bib
识别为 text/plain
?其他一些类型也将被识别为文本;在 github.
上查看该函数的结尾
这个问题的解决方法比较笨。显然,在 Linux 中可以在文件夹名称中包含换行符,但 RStudio 或 file
不喜欢这样。我不知道我的 test.bib
文件位于一个带有换行符的文件夹中。所以问题可以重现:
bib <- "@misc{test,
author = {test},
year = {2018},
title = {test},
}"
dir.create("test\nfolder")
writeLines(bib, "./test\nfolder/test.bib")
rstudioapi::navigateToFile("./test\nfolder/test.bib") # throws error
当文件夹被称为“测试文件夹”时它可以工作!抱歉浪费了大家的时间,我应该在别处测试一下...
最近我在使用 RStudio 时遇到了一个奇怪的问题(Ubuntu 18.04 上的 v1.3.1056):当我尝试打开一些文本文件时,RStudio 拒绝消息 file is binary rather than text
:
但是,我要打开的文件肯定是文本文件。以这个 bibtex 文件为例:
@misc{test,
author = {test},
year = {2018},
title = {test},
}
当我尝试用文件名“test.bib”打开它时,出现上述错误。将其重命名为“test.txt”时,RStudio 会毫无怨言地打开它。这里的步骤为R
代码:
rstudioapi::navigateToFile("test.bib") # won't work
file.copy("test.bib", "test.txt", overwrite = TRUE)
rstudioapi::navigateToFile("test.txt") # works perfectly
我很确定 RStudio 不会介意文件结尾,无论过去如何,它都会尝试以文本形式打开文件。但是现在我要么必须重命名文件,要么使用不同的文本编辑器来编辑我的围兜和其他文件。
据我所知,这不是 Ubuntu 将文件标记为二进制文件的问题。否则这些命令之一会抱怨,我认为:
readLines("test.bib")
system("grep 'misc' test.bib")
您可以在此处查看当前文件是否为文本的测试:https://github.com/rstudio/rstudio/blob/d1289249b11e0d12d2be12b3ceb701c41f110cec/src/cpp/session/SessionModuleContext.cpp#L1216。它根据文件扩展名查找记录的 MIME 类型(.bib
当前不在列表中,因此会失败)。
然后它会尝试 运行
file --dereference --mime --brief test.bib
然后查看结果。也许您的系统无法将 test.bib
识别为 text/plain
?其他一些类型也将被识别为文本;在 github.
这个问题的解决方法比较笨。显然,在 Linux 中可以在文件夹名称中包含换行符,但 RStudio 或 file
不喜欢这样。我不知道我的 test.bib
文件位于一个带有换行符的文件夹中。所以问题可以重现:
bib <- "@misc{test,
author = {test},
year = {2018},
title = {test},
}"
dir.create("test\nfolder")
writeLines(bib, "./test\nfolder/test.bib")
rstudioapi::navigateToFile("./test\nfolder/test.bib") # throws error
当文件夹被称为“测试文件夹”时它可以工作!抱歉浪费了大家的时间,我应该在别处测试一下...