我正在尝试实现一个简单的解决方法来读取资源目录中的文件
我的文件夹结构如下:
src
|
|------test
| |
| -----com.tester.stackoverflow (package name)
| |
| ----BufferedExample.java
|------resources
| | -----com.tester.stackoverflow (package name)
| ----Testing.txt
我正在尝试读取名为" Testing.txt"
的文件我有一个公共文件utilty,它是一个完全不同的包读取文件。 (代码是scala)
package com.tester.utility
object FileHelper
{
def read(file: File) : Array[Byte] =
{
val inputStream = new FileInputStream(file)
try
{
val buffer = ListBuffer[Byte]()
var bytes = inputStream.read()
while (bytes != -1)
{
buffer.append(bytes.byteValue)
bytes = inputStream.read()
}
buffer.toArray
}
catch
{
case ex: Exception =>
{
ex.printStackTrace
throw ex
}
}
finally
{
inputStream.close
}
}
}
BufferedExample应该从资源文件夹中读取具有相同包的文件Testing.txt。因此,我在上面的代码中传递文件对象对象。但是我无法直接从BufferedExample.java找到testing.txt文件。
我真的不想以绝对方式指定文件路径。 (仅传递文件名)。
谢谢!!!
答案 0 :(得分:1)
如果将资源目录添加到类路径中(例如,在Eclipse或pom.xml中的项目定义中),则可以使用getResourceAsStream
而不是新的FileInputStream()
。
如果您还希望从当前类中获取程序包名称,那么这也是可行的,但有点复杂:this.getClass().getPackage().toString()
或BufferedExample.class.getPackage().toString()
。
然后,您可以在说出getResourceAsStream
之前将包名称附加到文件名。