我在Netbeans中创建了一个JDBC,它将数据从文本文件加载到表中。当我在另一台计算机上运行程序时,文件路径(我认为这就是所谓的)将是不同的。
文本文件在我的桌面上。这意味着如果我必须从另一台计算机运行该程序,我会收到错误,因为该文件显然与原始计算机上的文件不同。
我创建了一个字符串来将数据加载到数据库中,如下所示:
String loadData = "load data local infile '/Users/Ricky/Desktop/table_data.txt'" +
"into table T1;";
我可以在netbeans项目中创建一个文件夹来存储文本文件吗?那么可以从具有相同路径的任何计算机访问它吗?
答案 0 :(得分:2)
解决方案是使用相对路径,如here
所述您需要做的不是使用绝对位置(即' C:\ FolderName \ filename.txt'),而是使用相对位置(即' table_data.txt')而不是。
在您的情况下,这转换为使用
String loadData = "load data local infile 'table_data.txt'" +
"into table T1;";
这样做是从与运行应用程序的位置相同的文件夹加载文件。
另一种解决方案是使用JFileChooser,它允许用户从保存的任何目录中查找文件。
答案 1 :(得分:1)
如果从与数据文件相同的目录运行程序,则可以使用:
String loadData = "load data local infile 'table_data.txt'" +
"into table T1;";
通过指定无路径,程序将查看当前工作目录(从中启动程序的目录)。
答案 2 :(得分:0)
您可以使用可选的命令行参数:
public class Main {
private static final String LOAD_COMMAND = "load data local infile '%s' into table T1;";
private static final String DEFAULT_FILE = System.getProperty("user.home") + "/table_data.txt";
public static void main(String[] args) {
String file = (args.length > 0) ? args[0] : DEFAULT_FILE;
String command = String.format(LOAD_COMMAND, file);
System.out.println(command);
}
}
如果您在Main.java
中保存了上述内容,则可以轻松进行测试。
javac Main.java && java -cp . Main
会打印:
load data local infile '/Users/<your-username>/table_data.txt' into table T1;
和
javac Main.java && java -cp . Main /my/file
会打印:
# load data local infile '/my/file' into table T1;