java如何通过绝对路径和相对路径读取文件
程序员文章站
2022-03-02 23:26:50
...
0x00 前言
当我在写java的数据库连接时,希望通过使用文件的相对路径来读取信息,因为使用绝对路径时在代码移植之后就会出现问题,这不是一个好的方法
0x01 概念
绝对路径:在我们平时使用计算机时要找到需要的文件就必须知道文件的位置,而表示文件的位置的方式就是路径
相对路径:由这个文件所在的路径引起的跟其它文件(或文件夹)的路径关系
0x02 java通过绝对路径读取文件
文件路径:D:\file\logon_initial.properties
文件内容:
读取文件的代码:
import java.io.*;
import java.sql.*;
import java.util.*;
public class DBConnection {
public static Connection getDBConnection( ) throws Exception {
Properties prop = new Properties();
prop.load(new FileInputStream("D:\\file\\logon_initial.properties"));
String drivers = prop.getProperty("drivers");
String url = prop.getProperty("url");
String username = prop.getProperty("username");
String password= prop.getProperty("password");
Class.forName(drivers); //加载驱动程序,JDK7以上版本可以不用
Connection conn= DriverManager.getConnection(url,username,password); //连接数据库
return conn;
}
public static void Close(Connection conn) throws SQLException{
conn.close();
}
}
需要注意的是绝对路径还要转义反斜杠
0x03 java通过src目录读取文件(以src为根目录)
文件路径: D:\javacode\fileread\src\DB\logon_initial.properties
代码:
import java.io.*;
import java.sql.*;
import java.util.*;
public class DBConnection {
public static Connection getDBConnection( ) throws Exception {
Properties prop = new Properties();
prop.load(new FileInputStream("src/DB/logon_initial.properties"));
String drivers = prop.getProperty("drivers");
String url = prop.getProperty("url");
String username = prop.getProperty("username");
String password= prop.getProperty("password");
Class.forName(drivers); //加载驱动程序,JDK7以上版本可以不用
Connection conn= DriverManager.getConnection(url,username,password); //连接数据库
return conn;
}
public static void Close(Connection conn) throws SQLException{
conn.close();
}
}
当我们把文件放在Java项目的src\
目录下时,可以通过文件的绝对路径来读取,比第一种方法更好一些,注意src
前是不需要添加斜杠/
的,当然我们也可以把文件放在src
目录下,就可以通过读取src/logon_initial.properties
来实现
0x04 java通过CLASSPATH路径来读取包内文件(bin目录)
通过这个方法可以用文件的相对路径来读取,比前两个方法更加可靠,需要注意的是要将logon_initial.properties
和DBConnection.class
处于同一个目录下,只要和当前类的的java源代码同一目录下即可,会自动加载到bin目录下。
1).绝对路径
String path = DBConnect.class.getResource(“/DB/logon_initial.properties”).getPath();
2).通过类加载器来读取
String path = 当前类名.class.getClassLoader().getResource("logon_initial.properties").getPath();
代码:
import java.io.*;
import java.sql.*;
import java.util.*;
public class DBConnection {
public static Connection getDBConnection( ) throws Exception {
Properties prop = new Properties();
prop.load(new FileInputStream(DBConnection.class.getResource("logon_initial.properties").getPath()));
String drivers = prop.getProperty("drivers");
String url = prop.getProperty("url");
String username = prop.getProperty("username");
String password= prop.getProperty("password");
Class.forName(drivers); //加载驱动程序,JDK7以上版本可以不用
Connection conn= DriverManager.getConnection(url,username,password); //连接数据库
return conn;
}
public static void Close(Connection conn) throws SQLException{
conn.close();
}
}
这样代码移植之后依然能够读取到文件,方便了很多。
切记是把要读取的文件放在和当前类的java源代码处于同一个包内(src下的目录下)
到此就OK了