java - 如何让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.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
(请参阅您的问题下方的评论),创建一个文件夹并将日志存储在那里。
推荐阅读
- python - 在非对称加密填充中使用散列算法
- metadata - 我正在尝试使用 xyplot 函数绘制图形,但没有输出
- java - 通过控制器时看到的格式丢失
- google-apps-script - 在 Google 表格中创建自定义公式
- visual-studio-code - VS Code - 重新映射某些箭头键功能
- spring-boot - 我在控制台中打印了这种错误
- swift - 动态修复屏幕中的 UICollectionView 单元格
- assembly - x86 程序集:如何将代码移动到显存并执行代码?
- coldfusion - 使用 .cfr 模板创建具有不同模板的多页 pdf?
- ruby-on-rails - 如何在同一个 Linode 服务器上托管多个网站