欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java如何通过绝对路径和相对路径读取文件

程序员文章站 2022-03-02 23:26:50
...

0x00 前言

当我在写java的数据库连接时,希望通过使用文件的相对路径来读取信息,因为使用绝对路径时在代码移植之后就会出现问题,这不是一个好的方法

0x01 概念

绝对路径:在我们平时使用计算机时要找到需要的文件就必须知道文件的位置,而表示文件的位置的方式就是路径

相对路径:由这个文件所在的路径引起的跟其它文件(或文件夹)的路径关系

0x02 java通过绝对路径读取文件

文件路径:D:\file\logon_initial.properties

文件内容:

java如何通过绝对路径和相对路径读取文件

读取文件的代码:

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

java如何通过绝对路径和相对路径读取文件

代码:

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.propertiesDBConnection.class处于同一个目录下,只要和当前类的的java源代码同一目录下即可,会自动加载到bin目录下。

java如何通过绝对路径和相对路径读取文件

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下的目录下)

java如何通过绝对路径和相对路径读取文件

到此就OK了