首页 > 解决方案 > 如何让java程序读取它的内部路径以使其在每台PC上工作

问题描述

我正在尝试将代码中的路径配置到我的 excel 文件中,以使其在我拥有源代码的每台计算机上工作,例如:

我的实际文件在 com/company/resources/DatabaseLogonData.xlsx 但我试图从 com/company/Database/DatabaseConnection.java 中的类打开它

我想我必须以某种方式返回 com/company 然后转到数据库包但不知道如何

package com.company.Database;

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

import java.io.File;
import java.io.IOException;
import java.sql.*;

public class DatabaseConnection {
    private static Database localDatabase;

    public static void setLocalDatabaseFromFile() 
throws IOException, InvalidFormatException {
        Workbook workbook = WorkbookFactory.create(new File(
"C:\\Users\\Wiktor\\IdeaProjects\\mixer\\src\\com\\company\\resources\\DatabaseLogonData.xlsx"));
        Sheet sheet = workbook.getSheetAt(0);
        Row dataRow = sheet.getRow(1);
        localDatabase = new Database(dataRow.getCell(0).getStringCellValue(),
dataRow.getCell(1).getStringCellValue(),
dataRow.getCell(2).getStringCellValue(),
dataRow.getCell(3).getStringCellValue());
    }

我想获得适用于任何电脑的路径。感谢您的任何反馈!

标签: java

解决方案


用于java.nio找出代码执行的位置:

public static void main(String args[]) throws Exception {
    Path cwd = Paths.get("").toAbsolutePath();
    Path parentOfCwd = Paths.get("").toAbsolutePath().getParent();
    System.out.println(cwd.toAbsolutePath().toString() 
            + " in folder " + parentOfCwd.toAbsolutePath().toString());
}

我不知道这是否是您的用例的最佳实践,但您也可以按照许多程序的方式进行,只需确定user.home(请参阅您的问题下方的评论),创建一个文件夹并将日志存储在那里。


推荐阅读