重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1、在Java开发工具的project中使用相对路径
创新互联专注为客户提供全方位的互联网综合服务,包含不限于做网站、成都网站设计、海阳网络推广、微信平台小程序开发、海阳网络营销、海阳企业策划、海阳品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供海阳建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com
在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、看看完整的java中用相对路径打开文件测试代码:
package com.lavasoft.test;
import java.io.*;
/**
* Java读取相对路径的文件
*
*/
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();
}
}
一个例子,如果有一个Test文件夹里面有test.java和hello.txt.如果你想用test.java操作hello.txt
只要在test.java中这样写File file=new File("hello.txt");//这样就是相对路径。如果文件结构是
Test文件夹
... |------test.java
... |------hello.txt
... |------source文件夹
................. |---------world.txt
如果想在test.java中操作world.txt。只要这样写File file=new File("source/world.txt");
另外,在web开发中/代表项目文件夹根目录,当然也有可能代替webapps,区分方法是:如果/开头的uri是给浏览器解析则/代表webapps,如果是给服务器后台解析,则代表项目文件
test
|
src
|
t090417
|
test.properties
Read.java
test.properties:
TEST=test
Read.java:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;
public class Read {
public static String TEST ;
private static Properties loadPropertyFile() throws FileNotFoundException,IOException{
Properties properties = new Properties() ;
FileInputStream fs = new FileInputStream("src/t090417/test.properties");
properties.load(fs);
return properties ;
}
public static void loadProperty(){
try{
Properties properties = loadPropertyFile();
TEST = properties.getProperty("TEST");
System.out.println("read from properties: "+TEST);
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] args) {
loadProperty();
}
}
其中用的就是相对路径!
相对路劲,是指相对自身而言的,打个比方说:src和xml是一层楼的两个房间,testmain和b分别是两个房间里的人,如果一个人要去找另一个人是不是要走出门,然后进到那个人的房间里呢。也就是说再testmain中访问b。就要先出门,然后再找b啊。其他情况同理啊~~
你认为对的那个路径我从来没写过,我就知道两种路径一种是绝对路径,另一种是相对路径,绝对路径是:D:/文件夹名/文件名 相对路径:../开头的形式的。一般相对路径用的比较多。
全部手打,完全个人理解。。。。。。如有不明白的可以再探讨。。。。。望采纳。。。