最近我在RStudio上遇到了一个奇怪的问题(在Ubuntu 18.04上为v 1.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")
答案 0 :(得分:2)
您可以在这里查看关于文件是否为文本的当前测试: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上查看该函数的结尾。
答案 1 :(得分:2)
这个问题的解决方案很愚蠢。显然,在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
当文件夹仅称为“测试文件夹”时,它可以工作!对不起,浪费了人们的时间,我应该在其他地方进行测试...