通过指定文件名(通过资源文件夹)读取不同目录中的文件

时间:2014-04-09 20:19:57

标签: java scala

我正在尝试实现一个简单的解决方法来读取资源目录中的文件

我的文件夹结构如下:

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文件。

我真的不想以绝对方式指定文件路径。 (仅传递文件名)。

谢谢!!!

1 个答案:

答案 0 :(得分:1)

如果将资源目录添加到类路径中(例如,在Eclipse或pom.xml中的项目定义中),则可以使用getResourceAsStream而不是新的FileInputStream()
如果您还希望从当前类中获取程序包名称,那么这也是可行的,但有点复杂:this.getClass().getPackage().toString()BufferedExample.class.getPackage().toString()
然后,您可以在说出getResourceAsStream之前将包名称附加到文件名。