Tg.
Tg.

Reputation: 5794

scala :How to read file in jar

I have directory structure like this

When in IDE (Intellij10), I could access it with relative path ("src/main/resource/text.txt") but it seems I can not do that when I compile in jar. How to read that file ?

also, I found that test.txt is copy into root of jar. Is this normal behavior ? Since I fear this will be clash with other resources file in src/test/resources.

thanks

Upvotes: 3

Views: 5138

Answers (2)

user1485864
user1485864

Reputation: 519

8 years later, I am also facing the same question. To ease the life of future developers, here is the answer:

Being copied into the root is normal behaviour, as:

the resources folder is like a src folder and so the content is copied, not the folder itself.

Now concerning the how-to question:

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

Upvotes: 3

Thomas
Thomas

Reputation: 151

From http://www.java-forums.org/advanced-java/5356-text-image-files-within-jar-files.html -

Once the file is inside the jar, you cannot access it with standard FileReader streams since it is treated as a resource. You will need to use Class.getResourceAsStream().

The test.txt being copied into the root is not normal behavior and is probably a setting with your IDE.

Upvotes: 5

Related Questions