gpt4 book ai didi

java - 如何解决 Java 错误 "The system cannot find the path specified"?

转载 作者:行者123 更新时间:2023-11-30 11:49:20 28 4
gpt4 key购买 nike

我正在运行 Mac OS X,代码可以正常工作。我的队友正在运行 Windows 7,他收到错误(即使目录结构和文件存在于他的系统中)。有任何想法吗?我在这上面花了好几个小时,想不通。谢谢。

import java.io.BufferedReader;
import java.io.FileReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement; // Not used
import java.sql.ResultSet; // Not used
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList; // Not used
import java.util.Scanner; // Not used

public class CreateDB {

public CreateDB() {
}

public void createDB() {

Connection conn = null;

String url = "jdbc:mysql://localhost:3306/";
String dbName = ""; // Not used (yet?)
String driver = "com.mysql.jdbc.Driver";
String userName = "root"; // Tell user userName is "root". OR/TODO: Change to something more secure?
String password = ""; // Tell user password is "". Or/TODO: Change to something more secure?
String line;
String sqlDump = null;
String [] sqlDumpArray;

String fileSeperator = System.getProperty("file.separator");
System.out.println("fileSeperator is: " + fileSeperator); // Testing
String path = System.getProperty("user.dir");
System.out.println("path is: " + path); // Testing
String pathToFile = (path + fileSeperator + "src" + fileSeperator + "files" + fileSeperator);
System.out.println("pathToFile is: " + pathToFile); // Testing.
String fileName = "create_db_and_tables.sql"; // NOTE: Rename file, if necessary. Make sure it's in right place.
System.out.println("pathToFile + fileName is: " + pathToFile + fileName); // Testing.

try {
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(url, userName, password);
System.out.println("Connected to the database.\n"); // Testing

BufferedReader reader = new BufferedReader(new FileReader(pathToFile + fileName));
line = reader.readLine();
while (line != null) {
sqlDump += line + "\n";
line = reader.readLine();
}

System.out.println(sqlDump); // Testing
sqlDumpArray = sqlDump.split(";");
System.out.println("sqlDumpArray size is " + sqlDumpArray.length); // Testing

for (int i = 0; i < sqlDumpArray.length; i++) {
System.out.println("\nsqlDumpArray[" + i + "] is: " + sqlDumpArray[i]); // Testing
}

for (int j = 1; j < sqlDumpArray.length -1; j++) {
try {
Statement statement = conn.createStatement();
statement.addBatch(sqlDumpArray[j]);
statement.executeBatch(); // Could refactor or us another method
}
catch (SQLException e) {
System.err.println("SQLException: " + e.getMessage());

}
catch (Exception e) {
System.err.println("Exception: " + e.getMessage());
}
}
}
catch (java.lang.ClassNotFoundException e) {
System.err.println("ClassNotFoundException: " + e.getMessage());

}
catch (SQLException e) {
System.err.println("SQLException: " + e.getMessage());

}
catch (Exception e) {
System.err.println("Exception: " + e.getMessage());
}
finally {
try {
// conn.commit(); // Not necessary
conn.close();
System.out.println("Successfully disconnected from database. Yeah!");
}
catch (SQLException e) {
System.err.println("SQLException in 'finally' block: " + e.getMessage());
}
}
}
public static void main(String[] args) {
CreateDB create = new CreateDB();
create.createDB();
}
}

Windows 用户在尝试执行数据库创建过程时收到错误。即使路径和文件看似正确,也会发生此错误,例如文件中以下 System.out.println 语句返回的内容(下面突出显示):

String fileSeperator = System.getProperty("file.separator");
System.out.println("fileSeperator is: " + fileSeperator);
String path = System.getProperty("user.dir");
System.out.println("path is: " + path);
String pathToFile = (path + fileSeperator + "src" + fileSeperator + "files" + fileSeperator);
System.out.println("pathToFile is: " + pathToFile);
String fileName = "create_db_and_tables.sql";
System.out.println("pathToFile + fileName is: " + pathToFile + fileName);

这是该语句在 Windows 7 计算机上返回的示例:

Exception: C:\Users\USER\workspace\mrbs2011a\src\files\create_db_and_tables.sql (The system cannot find the path specified)

即使 USER 的文件 create_db_and_tables.sql 位于 src/files 文件夹中,也会打印出来。

最佳答案

可能文件已被锁定,或者运行 Java 程序的用户权限不允许访问该文件。

如果文件确实存在,则可能是文件被锁定(例如,被另一个进程保持打开以供写入)的原因。 documentation for FileReader表示如果“命名文件不存在,是一个目录而不是常规文件,或者由于某些其他原因无法打开以供阅读,它将抛出 FileNotFoundException。”

关于java - 如何解决 Java 错误 "The system cannot find the path specified"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8431627/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com