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

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.propertiesDBConnection.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了

猜你喜欢

转载自blog.csdn.net/qq_39629343/article/details/80500820