您的位置:首页 > 编程语言 > Java开发

Java – Read a file from resources folder

2014-12-01 17:47 295 查看

Java – Read a file from resources folder



Posted on July 30, 2014
By
mkyong



In this tutorial, we will show you how to read a file from a resources folder, in both Java and Unit Test environment. In simple, put files in a resources folder, and read the file with following code snippets :

ClassLoader classLoader = getClass().getClassLoader();
	File file = new File(classLoader.getResource("file/test.xml").getFile());


1. Project Directory

Review a Maven project Structure.



2. Classic Example

Example to read a file “test.txt” from a
resources
folder.

main/resources/file/test.txt

This is line 1
This is line 2
This is line 3
This is line 4
This is line 5


Hello.java

package com.mkyong;
 
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
 
public class Hello {
 
  public static void main(String[] args) {
	Hello obj = new Hello();
	System.out.println(obj.getFile("file/test.txt"));		
  }
 
  private String getFile(String fileName) {
 
	StringBuilder result = new StringBuilder("");
 
	//Get file from resources folder
	ClassLoader classLoader = getClass().getClassLoader();
	File file = new File(classLoader.getResource(fileName).getFile());
 
	try (Scanner scanner = new Scanner(file)) {
 
		while (scanner.hasNextLine()) {
			String line = scanner.nextLine();
			result.append(line).append("\n");
		}
 
		scanner.close();
 
	} catch (IOException e) {
		e.printStackTrace();
	}
 
	return result.toString();
 
  }
 
}


Output

This is line 1
This is line 2
This is line 3
This is line 4
This is line 5


3. IOUtils Example

This example uses
IOUtils
to parse a file.

pom.xml

<dependency>
		<groupId>org.apache.directory.studio</groupId>
		<artifactId>org.apache.commons.io</artifactId>
		<version>2.4</version>
	</dependency>


Hello.java

package com.mkyong;
 
import java.io.IOException;
import org.apache.commons.io.IOUtils;
 
public class Hello {
 
  public static void main(String[] args) {
 
	Hello obj = new Hello();
	System.out.println(obj.getFileWithUtil("file/test.txt"));
 
  }
 
  private String getFileWithUtil(String fileName) {
 
	String result = "";
 
	ClassLoader classLoader = getClass().getClassLoader();
	try {
	    result = IOUtils.toString(classLoader.getResourceAsStream(fileName));
	} catch (IOException e) {
		e.printStackTrace();
	}
 
	return result;
  }
 
}


Output

This is line 1
This is line 2
This is line 3
This is line 4
This is line 5


4. Unit Test Example

A jUnit example.

test/resources/xml/test.xml

<test>
	<case id=1>
		<param>100</param>
		<expected>mkyong</expected>
	</case>
	<case id=2>
		<param>99</param>
		<expected>mkyong</expected>
	</case>
</test>


TestHello.java

package com.mkyong;
 
import java.io.IOException;
import org.apache.commons.io.IOUtils;
import org.junit.Test;
 
public class TestHello {
 
  @Test
  public void testHello() {
 
	  String result = getFile("xml/test.xml");
	  System.out.println(result);
 
  }
 
  private String getFile(String fileName){
 
	  String result = "";
 
	  ClassLoader classLoader = getClass().getClassLoader();
	  try {
		result = IOUtils.toString(classLoader.getResourceAsStream(fileName));
	  } catch (IOException e) {
		e.printStackTrace();
	  }
 
	  return result;
 
  }
}


Output

<test>
	<case id=1>
		<param>100</param>
		<expected>mkyong</expected>
	</case>
	<case id=2>
		<param>99</param>
		<expected>mkyong</expected>
	</case>
</test>


References

Java : GetResourceAsStream In Static Method
Class – JavaDoc
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: