scala:如何读取jar中的文件
我有这样的目录结构scala:如何读取jar中的文件,scala,jar,Scala,Jar,我有这样的目录结构 src 主要 资源 text.txt 斯卡拉 你好 斯卡拉世界酒店 试验 与主文件夹相同 pom.xml 在IDE(Intellij10)中时,我可以使用相对路径(“src/main/resource/text.txt”)访问它,但在jar中编译时似乎无法做到这一点。如何读取该文件 另外,我发现test.txt被复制到jar的根目录中。这是正常的行为吗?因为我担心这会与src/test/resources中的其他资源文件冲突 谢谢- 一旦文件位于j
- src
- 主要
- 资源
- text.txt
- 斯卡拉
- 你好
- 斯卡拉世界酒店
- 你好
- 资源
- 试验
- 与主文件夹相同
- 主要
- pom.xml
复制到根目录中的test.txt不是正常行为,可能是IDE的设置 8年后,我也面临着同样的问题。为了缓解未来开发者的生活,以下是答案: 要复制到根目录中,如下所示: 资源文件夹类似于src文件夹,因此内容是 已复制,而不是文件夹本身 现在关于操作问题:
import scala.io.Source
val name = "text.txt"
val source: Source = Source.fromInputStream(getClass.getClassLoader.getResourceAsStream(name))
// Add the new line character as a separator as by getLines removes it
val resourceAsString: String = source.getLines.mkString("\n")
// Don't forget to close
source.close
关于资源文件的位置。maven呢?我计划两者都使用,所以我希望它们的行为方式相同。我还在为如何读取jar中的文件而挣扎。好的,明白了。虽然我觉得奇怪,我必须处理输入流来阅读。这是设计还是什么?这是对设计的逻辑限制。一旦文件在jar中,您就不能通过文件路径从文件系统中读取它,因为它不在jar中。现在它是压缩档案中的一块数据,这太糟糕了。我希望有一些通用的方法来处理jar内外的文件。我想我必须重新考虑部署jar文件的方式。