/*
*This program checks type casting from String to int/double from a file
*/
import java.io.*;
import java.lang.String;
public class ConvertingStringsToNums {
public static void main (String[] args){
File dataFile = new File("/files/scores.dat");
FileReader in;
BufferedReader readFile;
String score;
double avgScore, totalScores = 0;
int numScores = 0;
//------------------------------------------------------------
try {
in = new FileReader(dataFile);
readFile = new BufferedReader(in);
while((score = readFile.readLine()) != null) {
numScores += 1;
System.out.println(score);
totalScores += Double.parseDouble(score);
}
avgScore = totalScores / numScores;
readFile.close();
in.close();
} catch(FileNotFoundException e) {
System.err.println("FileNotFoundException: " + e.getMessage());
} catch (IOException e) {
System.err.println("IOException: " + e.getMessage());
} //end try/catch
}
}
问问题
962 次
3 回答
1
1) 如果您希望在硬盘驱动器上的绝对文件路径中打开文件:
br = new BufferedReader (
new FileReader(
new File ("/files/scores.dat")));
2)如果您希望以相对于您启动应用程序的位置的相对路径打开文件:
br = new BufferedReader (
new FileReader(
new File ("files/scores.dat")));
3) 如果您希望以相对于类文件的相对路径打开文件(尤其与包和/或从 .jar 或 .war 执行有关):
this.getClass().getResourceAsStream ("files/scores.dat");
'希望有帮助
于 2012-12-22T23:54:14.720 回答
0
原因可能是您没有打开文件的权限。从终端尝试 chmod 755 scores.dat
以更改权限并查看错误是否仍然存在。
于 2012-12-22T19:43:27.903 回答
0
这个问题的答案存在于File 类的 javadocs 中:
对于 UNIX 平台,绝对路径名的前缀始终是“/”。相对路径名没有前缀。表示根目录的抽象路径名具有前缀“/”和一个空的名称序列。
在您的代码中,您具有以下内容:
File dataFile = new File("/files/scores.dat");
根据文档,这是一个绝对路径,这意味着 Java 正在文件系统的根目录中查找名为“files”的文件夹,然后在该文件夹中查找 score.dat。
如果您希望搜索相对于当前目录的文件目录,则需要省略第一个/
:
File dataFile = new File("files/scores.dat");
另一种选择是使用数据文件的绝对路径,但如果更改项目的位置或将类文件放在 JAR 文件中,可能会遇到问题。
尝试将您的日志记录级别设置为 DEBUG 或 ALL,以便您可以准确地看到程序试图查看的位置。这将帮助您调整代码以定位正确的文件夹。
于 2012-12-22T20:07:50.660 回答