-
2021-04-22 20:38:09
Java相对路径读取文件
不管你是新手还是老鸟,在程序中读取资源文件总会遇到一些找不到文件的问题,这与Java底层的实现有关,不能算bug,只要方法得当,问题还是可以解决的。
项目的文件夹结构:
repathtest
├─src
│ └─com
│ └─lavasoft
│ ├─test
│ └─res
├─doc
1、在Java开发工具的project中使用相对路径
在project中,相对路径的根目录是project的根文件夹,在此就是repathtest文件夹了。
创建文件的写法是:
File f = new File("src/com/lavasoft/res/a.txt");
File f = new File("doc/b.txt");
注意:
路径不以“/”开头;
脱离了IDE环境,这个写法就是错误的,也并非每个IDE都如此,但我见到的都是这样的。
2、通过CLASSPATH读取包内文件
读取包内文件,使用的路径一定是相对的classpath路径,比如a,位于包内,此时可以创建读取a的字节流:
InputStream in = ReadFile.class.getResourceAsStream("/com/lavasoft/res/a.txt");
有了字节流,就能读取到文件内容了。
注意:
这里必须以“/”开头;
3、看看完整的测试代码
package com.lavasoft.test;
import java.io.*;
/**
* Java读取相对路径的文件
*
* @author leizhimin 2010-1-15 10:59:43
*/
public class ReadFile {
public static void main(String[] args) {
readTextA_ByClassPath();
readTextA_ByProjectRelativePath();
&n
相关文档:
[摘要]
提起Java内部类(Inner
Class)可能很多人不太熟悉,实际上类似的概念在C++里也有,那就是嵌套类(Nested
Class),关于这两者的区别与联系,在下文中会有对比。
[关键字] Java
内部类
匿名类
有人会问,如果内部类里的一个成员变量与外部类的一个成员变量同名,也即外部类的同名成员变量被屏蔽� ......
Blog from http://forum.xda-developers.com/showthread.php?t=552846
I've just pushed new Hero Java app into my rogers build and it works fine.
What you basically need is:
Jbed.apk (install with adb install)
libjbedvm.so (adb push /system/lib) - remember to remount as RW.
I strongly suggest to ......
您查询的关键词是:newinstance object initargs 。如果打开速度慢,可以尝试快速版;如果想保存快照,可以添加到搜藏。
(百度和网页http://bbs.iaiai.com/forum/read.php?tid=2690的作者无关,不对其内容负责。百度快照谨为网络故障时之索引,不代表被搜索网站的即时页面。)
主题 : java的反射 ......
很多人都知道在swing中加入jPopupMenu组件后可以在鼠标的驱动下探出一个菜单,但是,如果用一般做法,在界面上单击左键也会弹出菜单,那么有没有办法在只有单击右键才弹出菜单呢?其实只是用到了一个小技巧。 你的弹出鼠标菜单鼠标驱动选择 MouseReleased 然后再在监听事件的方法中加入下面的代码就可以了: if(evt.isPop ......
运行时多态性是面向对象程序设计代码重用的一个最强大机制,动态性的概念也可以被说成“一个接口,多个方法”。Java实现运行时多态性的基础是动态方法调度,它是一种在运行时而不是在编译期调用重载方法的机制,下面就继承和接口实现两方面谈谈java运行时多态性的实现。
一、通过 ......
更多相关内容 -
java读取src路径下的txt文件_Java相对路径读取文件
2020-11-10 18:09:41不管你是新手还是老鸟,在程序中读取资源文件总会遇到一些找不到文件的问题,这与Java底层的实现有关,不能算bug,只要方法得当,问题还是可以解决的。项目的文件夹结构:repathtest ├─src │ └─com │ └─...不管你是新手还是老鸟,在程序中读取资源文件总会遇到一些找不到文件的问题,这与Java底层的实现有关,不能算bug,只要方法得当,问题还是可以解决的。
项目的文件夹结构:
repathtest
├─src
│ └─com
│ └─lavasoft
│ ├─test
│ └─res
├─doc1、在Java开发工具的project中使用相对路径
在project中,相对路径的根目录是project的根文件夹,在此就是repathtest文件夹了。
创建文件的写法是:
File f = new File("src/com/lavasoft/res/a.txt");
File f = new File("doc/b.txt");
注意:
路径不以“/”开头;
脱离了IDE环境,这个写法就是错误的,也并非每个IDE都如此,但我见到的都是这样的。
2、通过CLASSPATH读取包内文件
读取包内文件,使用的路径一定是相对的classpath路径,比如a,位于包内,此时可以创建读取a的字节流:
InputStream in = ReadFile.class.getResourceAsStream("/com/lavasoft/res/a.txt");
有了字节流,就能读取到文件内容了。
注意:
这里必须以“/”开头;
3、看看完整的测试代码
package com.lavasoft.test;
import java.io.*;
/**
* Java读取相对路径的文件
*
* @author leizhimin 2010-1-15 10:59:43
*/
public class ReadFile {
public static void main(String[] args) {
readTextA_ByClassPath();
readTextA_ByProjectRelativePath();
readTextB_ByProjectRelativePath();
}
/**
* 通过工程相对路径读取(包内)文件,注意不以“/”开头
*/
public static void readTextA_ByProjectRelativePath() {
System.out.println("-----------------readTextA_ByProjectRelativePath---------------------");
File f = new File("src/com/lavasoft/res/a.txt");
String a = file2String(f, "GBK");
System.out.println(a);
}
/**
* 通过工程相对路径读取(包外)文件,注意不以“/”开头
*/
public static void readTextB_ByProjectRelativePath() {
System.out.println("-----------------readTextB_ByProjectRelativePath---------------------");
File f = new File("doc/b.txt");
String b = file2String(f, "GBK");
System.out.println(b);
}
/**
* 通过CLASSPATH读取包内文件,注意以“/”开头
*/
public static void readTextA_ByClassPath() {
System.out.println("-----------------readTextA_ByClassPath---------------------");
InputStream in = ReadFile.class.getResourceAsStream("/com/lavasoft/res/a.txt");
String a = stream2String(in, "GBK");
System.out.println(a);
}
/**
* 文件转换为字符串
*
* @param f 文件
* @param charset 文件的字符集
* @return 文件内容
*/
public static String file2String(File f, String charset) {
String result = null;
try {
result = stream2String(new FileInputStream(f), charset);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return result;
}
/**
* 文件转换为字符串
*
* @param in 字节流
* @param charset 文件的字符集
* @return 文件内容
*/
public static String stream2String(InputStream in, String charset) {
StringBuffer sb = new StringBuffer();
try {
Reader r = new InputStreamReader(in, charset);
int length = 0;
for (char[] c = new char[1024]; (length = r.read(c)) != -1;) {
sb.append(c, 0, length);
}
r.close();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
}(代码写得粗糙,异常没做认真处理)
运行结果:
-----------------readTextA_ByClassPath---------------------
aaaaaaaaa
sssssssss
-----------------readTextA_ByProjectRelativePath---------------------
aaaaaaaaa
sssssssss
-----------------readTextB_ByProjectRelativePath---------------------
bbbbbbbbbbb
Process finished with exit code 0这是通过IDEA开发工具运行的,结果没问题,如果换成控制台执行,那么使用了项目相对路径的读取方式会失败,原因是,此时已经脱离了项目的开发环境,-----这个问题常常困扰着一些菜鸟,代码在开发工具好好的,发布后执行就失败了!
下面我截个图:
5、获取CLASSPATH下文件的绝对路径
当使用相对路径写入文件时候,就需要用到绝对路径。下面是个例子:
package com.lavasoft;
import java.io.File;
/**
* CLASSPATH文件的绝对路径获取测试
*
* @author leizhimin 2010-1-18 9:33:02
*/
public class Test {
//classpath的文件路径
private static String cp = "/com/lavasoft/cfg/syscfg.properties";
public static void main(String[] args) {
//当前类的绝对路径
System.out.println(Test.class.getResource("/").getFile());
//指定CLASSPATH文件的绝对路径
System.out.println(Test.class.getResource(cp).getFile());
//指定CLASSPATH文件的绝对路径
File f = new File(Test.class.getResource(cp).getFile());
System.out.println(f.getPath());
}
}输出:
/D:/projects/bbt/code/cdn/planrpt/out/production/planrpt/
/D:/projects/bbt/code/cdn/planrpt/out/production/planrpt/com/lavasoft/cfg/syscfg.properties
D:projectsbbtcodecdnplanrptoutproductionplanrptcomlavasoftcfgsyscfg.properties
Process finished with exit code 0总结
使用工程相对路径是靠不住的。
使用CLASSPATH路径是可靠的。
对于程序要读取的文件,尽可能放到CLASSPATH下,这样就能保证在开发和发布时候均正常读取。
-
java中如何使用相对路径读取文件
2021-03-03 14:07:49java中使用相对路径读取文件的方法:1、使用文件【File file = new File(“src/test.txt”)】方法;2、使用类的相对路径;3、使用当前线程的类加载器;4、读取web工程下的文件。【相关学习推荐:java中使用相对路径...java中使用相对路径读取文件的方法:1、使用文件【File file = new File(“src/test.txt”)】方法;2、使用类的相对路径;3、使用当前线程的类加载器;4、读取web工程下的文件。
【相关学习推荐:
java中使用相对路径读取文件的方法:
一、简单粗暴的 File file = new File(“src/test.txt”);@Test
/**
* 这种方法 “” 空代表的是 这个Java项目 TestSomeTechnology 由于实际项目在打包后没有src目录 所以这种方法不常用
*/
public void testMethod1() throws IOException{
File file = new File("src/test.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
String len = null;
while ((len=br.readLine())!=null){
System.out.println(len);
}
}
二、使用类的相对路径
TestRelativePath.class.getResource(“/test.txt”).getFile()@Test
/**
* 使用类的相对路径
* 这种方法 “/” 代表的是bin。 src文件夹和resources 文件夹下的的东西都会被加载到bin下面 因为这两个文件被配置为了source
*/
public void testMethod2() throws IOException{
File file = new File(TestRelativePath.class.getResource("/test.txt").getFile());
BufferedReader br = new BufferedReader(new FileReader(file));
String len = null;
while ((len=br.readLine())!=null){
System.out.println(len);
}
}
三、使用当前线程的类加载器
Thread.currentThread().getContextClassLoader().getResource(“test.txt”).getFile()@Test
/**
* 这种是通过当前线程的类加载器
* 这种方法 “ ” 空代表的是bin 。 于是就直接填写test,文件夹下的的东西都会被加载到bin下面,因为这两个文件被配置为了source
*/
public void testMethod3() throws IOException{
File file = new File(Thread.currentThread().getContextClassLoader().getResource("test.txt").getFile());
BufferedReader br = new BufferedReader(new FileReader(file));
String len = null;
if ((len=br.readLine())!=null){
System.out.println(len);
}
}
四、读取web工程下的文件 使用getRealPath()读取
目录如下 :
读取 index.jsp@WebServlet(name = "TestServlet",urlPatterns = "/TestServlet")
public class TestServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
/**
* web工程的根目录是 webRoot, 使用 “/” 代表webroot webroot下面有index.jsp文件
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
File file = new File(getServletContext().getRealPath("/index.jsp"));
BufferedReader br = new BufferedReader(new FileReader(file));
String len = null;
while ((len=br.readLine())!=null){
System.out.println(len);
}
}
}
读取 test.txt文件
不过如果想读取test.txt 的话 我们可用用上面的方式File file = new File(Thread.currentThread().getContextClassLoader().getResource("test.txt").getFile());
也可以使用 getRealPath()
不过由于是以 webroot为根目录 我们需要从classes里面读:idea的classes等价于esclipse的classpath 。classes说明:
代码:File file = new File(getServletContext().getRealPath("/WEB-INF/classes/test.txt"));
getResourceAsStream()方法详解
getResourceAsStream()用法与getResouce()方法一样的,用getResource()取得File文件后,再new FileInputStream(file) 与 getResourceAsStream() 的效果一样。。
两个代码效果一样InputStream inputStream1 = new FileInputStream(new File(Thread.currentThread().getContextClassLoader().getResource("test.txt").getFile()));
InputStream inputStream2 = Thread.currentThread().getContextClassLoader().getResourceAsStream("test.txt");
-
Java io流使用相对路径读取文件
2019-12-08 11:46:05前言: 在大多数时候我们会需要Java程序读取某个文件,不采用绝对路径读取文件,而采用相对路径读取。方法如下: 在工程目录下读取文件: 文件目录: /** * 工程目录下的相对路径读取文件数据 */ public ...前言: 在大多数时候我们会需要Java程序读取某个文件,不采用绝对路径读取文件,而采用相对路径读取。方法如下:
在工程目录下读取文件:
文件目录:
/** * 工程目录下的相对路径读取文件数据 */ public void pathIO() throws IOException { String filePath = "src/iofile/file.txt"; String line = ""; FileReader fileReader = new FileReader(filePath); BufferedReader bufferedReader = new BufferedReader(fileReader); line = bufferedReader.readLine(); while (line != null){ line = bufferedReader.readLine(); System.out.println(line); } }
控制台
注意: 代码中文件路径“src”是必加的,若使用平常的相对路径,如:“…/iofile/file.txt”等相对路径,程序执行后会报找不到文件路径的错误,所以需加上src等字样。这种方法无论何时都得加一个工程目录,若是在cmd中使用jdk编译运行,岂不是很麻烦嘛?别急,看下一种方法。
非工程目录下的相对路径读取文件
这种方法属于取巧的,首先获取文件所在路径,然后依靠一系列的拼接裁剪字符串获得绝对路径,即可。
代码如下:
/** * 非工程目录下的相对路径获取文件数据 * @throws IOException */ public void noProcessPath() throws IOException { String filePath = getClass().getResource("file.txt").getPath(); System.out.println("filePath: "+filePath); filePath = filePath.substring(1); //裁剪字符串获得正确路径 System.out.println("filePath: " + filePath); FileReader fileReader = new FileReader(filePath); BufferedReader bufferedReader = new BufferedReader(fileReader); String line = bufferedReader.readLine(); while (line != null){ line = bufferedReader.readLine(); System.out.println(line); } }
控制台:
总结:
至此,这篇笔记到此结束。
北京市需要租房或者转租房子,找舍友合租的都可以关注这个公众号哦,可帮忙发布房源信息,上面也有uu发布的转租信息呢。
-
java如何通过绝对路径和相对路径读取文件
2018-05-29 19:24:200x00 前言 当我在写java的数据库连接时,希望通过使用文件的相对路径来读取信息,因为使用绝对路径时在代码移植之后就会出现问题,这不是一个好的方法 0x01 概念 ...0x02 java通过绝对路径读取文件 ... -
java相对路径读取文件
2017-06-18 23:44:22java读取文件的相对路径问题 -
java中使用相对路径读取文件的写法总结 以及getResourceAsStream()
2017-07-05 15:03:13读取文件的写法,相对路径在当前的目录结构中读取test.txt的有三种写法 File file = new File("src/test.txt"); File file = new File(TestRelativePath.class.getResource("/test.txt").getFile()); File file = ... -
java中使用相对路径读取文件的写法总结 ,以及getResourceAsStream() (转)
2021-02-27 19:54:42https://blog.csdn.net/my__sun_/article/details/74450241读取文件的写法,相对路径在当前的目录结构中读取test.txt的有四种写法简单粗暴的 File file = new File(“src/test.txt”)使用类的相对路径使用当前线程的... -
浅谈java 中文件的读取File、以及相对路径的问题
2020-08-27 03:56:00今天小编就为大家分享一篇浅谈java 中文件的读取File、以及相对路径的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
Java获取路径方法&相对路径读取xml文件方法
2021-03-03 11:58:42//不推荐使用获取工程的根路径 (2)、request.getRealPath(request.getRequestURI());//获取jsp的路径,这个方法比较好用,可以直接在servlet和jsp中使用 (3)、request.getSession().getServletContext().getRealPath... -
java 使用相对路径读取文件
2019-05-30 11:11:49java 使用相对路径读取文件 1.java project环境,使用java.io用相对路径读取文件的例子: *目录结构: DecisionTree |___src |___com.decisiontree.SamplesReader.java |___resource ... -
java new file 使用相对路径读取文件.doc
2020-05-21 23:34:00精选文库 PAGE PAGE 3 1.java project环境使用java.io用相对路径读取文件的例子 *目录结构 ? DecisionTree ? |_src ? |_com.decisiontree.SamplesReader.java ? |_resource ? |_train.txt,test.txt *SamplesReader.... -
Java 程序中使用相对和绝对路径读取文件
2021-02-12 18:39:40在Java中用File对象来创建文件时,绝对路径一般是不会出现什么问题的,如果使用相对路径,则有可能出现意向不到的问题,以下主要是针对相对路径进行解释1、Eclipse下的Java Project环境目录结构如下所示:... -
java中用相对路径打开文件。
2021-02-12 23:18:06展开全部1、在Java开发e69da5e887aa3231313335323631343130323136353331333337396166工具的project中使用相对路径在project中,相对路径的根目录是project的根文件夹,在此就是repathtest文件夹了。创建文件的写法是... -
Java获取相对路径文件
2021-10-11 17:03:20class.getResourceAsStream("")获得的是相对路径 class.getClassLoader().getResourceAsStream("")加载器获得是绝对路径 Class.getResourceAsStream(String path) : (1)不以 “/” 开头时,默认是从此类所在的包... -
Java读取相对路径文件怎么读取不了?求助
2017-10-20 03:37:27Exception in thread "main" java.io.FileNotFoundException: scores.txt (系统找不到指定的文件。) at java.io.FileInputStream.open0(Native Method) at java.io.FileInputStream.open(Unknown Source) at java.io... -
java读取文件路径的几种方法,java 的Class中获得相对路径,绝对路径的方法
2021-02-12 14:21:15// (Class文件所在路径)file:/F:/share/JavaProject/NC_HUAXIN_SALE/out/public/ System.out.println(new File("/").getAbsolutePath()); // D:\ System.out.println(System.getProperty("user.dir")); // D:\fsoft... -
Java以绝对路径和相对路径的方式读取文件
2019-11-10 10:39:001. 绝对路径的方式读取文件 这个很简单,就是用大家熟悉的File类加载文件,然后用输入流读取文件内容就可以了。 import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import ... -
java读取相对路径文件夹下的文件
2021-01-16 17:55:13文件读取使用相对路径读取项目下resources下的文件: /** * 读取相对路径文件 * 注意:相对路径的文件必须要在resources下创建文件夹 */ public static List<String> readFileByLine(String file) throws ... -
Java相对路径总结
2021-03-04 00:53:311.基本概念的理解绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的...相对路径:相对与某个基准目录的路径。包含Web的相对路径(HTML中的相对目录),例如:在Servlet中,"/"代表Web应用的跟目录。和物理...