关于spring读取文件的问题
2017-08-28 09:58
246 查看
1.使用普通建立项目
目录结构
![](https://img-blog.csdn.net/20170828095949608)
test.txt文件在src的根下面
我们使用spring封装好的类路径读取文件
package test;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.PathResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.WritableResource;
public class FileSourceExample {
public static void main (String [] args) {
try {
Resource res2 = new ClassPathResource("test.txt");//使用类路径方式加载文件
System.out.println("路径:"+res2.getURL());
InputStream ins2 = res2.getInputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int i;
while((i = ins2.read())!= -1) {
baos.write(i);
}
System.out.println(baos.toString());
//System.out.println("res1:"+res1.getFilename());
System.out.println("res2:"+res2.getFilename());
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}这种方式的文件的打印路径是:
![](https://img-blog.csdn.net/20170828100251938)
可以看出java读取文件是在编译后的bin文件夹找。文件名的空格被转成了%20
这个项目在文件夹里是这个样子的:
![](https://img-blog.csdn.net/20170828101905344)
2.使用maven建立的项目
目录结构
![](https://img-blog.csdn.net/20170828102141876)
将test.txt文件放在了src/main/resources/conf/下。同样的使用spring封装好的类路径方式进行访问。
package com.smart.resource;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.PathResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.WritableResource;
public class FileSourceExample {
public static void main (String [] args) {
try {
String filePath = "D:/Workspaces/MyEclipse 2017 CI/chapterX/src/main/resources/conf/test.txt";
WritableResource res1 = new PathResource(filePath);//使用系统文件路径方式加载文件
Resource res2 = new ClassPathResource("conf/test.txt");//使用类路径方式加载文件
System.out.println("路径:"+res2.getURL());
InputStream ins1 = res1.getInputStream();
InputStream ins2 = res2.getInputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int i;
while((i = ins1.read())!= -1) {
baos.write(i);
}
System.out.println(baos.toString());
System.out.println("res1:"+res1.getFilename());
System.out.println("res2:"+res2.getFilename());
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
执行后文件的路径显示是:
![](https://img-blog.csdn.net/20170828102505860)
这里我再把普通java项目的结果贴出了对比来看
![](https://img-blog.csdn.net/20170828100251938)
chapterX和test分别是这两个项目的项目名。最后项目编译后两个的存放class文件的方式是不一样的。一个在bin中,一个是在target\classes中。
最后贴一下maven的文件结构:
目录结构
test.txt文件在src的根下面
我们使用spring封装好的类路径读取文件
package test;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.PathResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.WritableResource;
public class FileSourceExample {
public static void main (String [] args) {
try {
Resource res2 = new ClassPathResource("test.txt");//使用类路径方式加载文件
System.out.println("路径:"+res2.getURL());
InputStream ins2 = res2.getInputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int i;
while((i = ins2.read())!= -1) {
baos.write(i);
}
System.out.println(baos.toString());
//System.out.println("res1:"+res1.getFilename());
System.out.println("res2:"+res2.getFilename());
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}这种方式的文件的打印路径是:
可以看出java读取文件是在编译后的bin文件夹找。文件名的空格被转成了%20
这个项目在文件夹里是这个样子的:
2.使用maven建立的项目
目录结构
将test.txt文件放在了src/main/resources/conf/下。同样的使用spring封装好的类路径方式进行访问。
package com.smart.resource;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.PathResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.WritableResource;
public class FileSourceExample {
public static void main (String [] args) {
try {
String filePath = "D:/Workspaces/MyEclipse 2017 CI/chapterX/src/main/resources/conf/test.txt";
WritableResource res1 = new PathResource(filePath);//使用系统文件路径方式加载文件
Resource res2 = new ClassPathResource("conf/test.txt");//使用类路径方式加载文件
System.out.println("路径:"+res2.getURL());
InputStream ins1 = res1.getInputStream();
InputStream ins2 = res2.getInputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int i;
while((i = ins1.read())!= -1) {
baos.write(i);
}
System.out.println(baos.toString());
System.out.println("res1:"+res1.getFilename());
System.out.println("res2:"+res2.getFilename());
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
执行后文件的路径显示是:
这里我再把普通java项目的结果贴出了对比来看
chapterX和test分别是这两个项目的项目名。最后项目编译后两个的存放class文件的方式是不一样的。一个在bin中,一个是在target\classes中。
最后贴一下maven的文件结构:
相关文章推荐
- 关于Spring boot中读取属性配置文件出现中文乱码的问题的解决
- 关于Spring与mybatis整合无法读取配置文件的问题
- 关于oracle数据库中读取文件路径的问题整理
- 关于flex读取本地文件的问题
- 两个关于.NET读取EXCEL文件的问题,记下来,很有用!
- 关于.NET读取Excel文件到DataSet后数据丢失问题
- 关于读取txt文件的分段问题
- 两个关于.NET读取EXCEL文件的问题,记下来,感觉很有用
- 学习ORACLE中关于配置文件的读取和修改心得以及问题
- 关于就win32应用程序在64位机器上读取system目录下文件失败的问题的解决方案
- 关于CFile读取文件的问题GetLength(),,,万恶的CFile不如|CStdioFile
- 一个关于OpenCV2.2静态编译时无法用cvCaptureFromFile读取文件的问题
- 关于getprivateprofilestring 读取 windows 文件夹下ini文件异常问题的探究
- 关于javascript从txt文件中读取内容出现乱码的问题
- 关于 Silverlight 项目文件 无法读取的问题
- 今天解决了两个关于.NET读取EXCEL文件的问题,记下来,很有用!
- 两个关于.NET读取EXCEL文件的问题
- 关于读取文件字符的两种写法在Lucene中的问题
- 两个关于.NET读取EXCEL文件的问题,记下来,很有用!
- 关于js读取本地excel文件的问题。。纠结好久了