/*
*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
}
}
答案 0 :(得分: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");
'希望有所帮助
答案 1 :(得分:0)
原因可能是你没有权限打开文件。
从终端尝试chmod 755 scores.dat
以更改权限并查看错误是否仍然存在。
答案 2 :(得分:0)
此问题的答案存在于javadocs for the File class:
中对于UNIX平台,绝对路径名的前缀始终为“/”。相对路径名没有前缀。表示根目录的抽象路径名具有前缀“/”和空名称序列。
在您的代码中,您有以下内容:
File dataFile = new File("/files/scores.dat");
根据文档,这是一个绝对路径,这意味着Java正在文件系统的根目录中查找名为“files”的文件夹,然后在该文件夹中查找scores.dat。
如果您希望搜索相对于当前目录的文件目录,则需要省略第一个/
:
File dataFile = new File("files/scores.dat");
另一个选项是使用数据文件的绝对路径,但如果更改项目的位置或将类文件放在JAR文件中,则可能会遇到问题。
尝试将您的日志记录级别调高到DEBUG或ALL,以便您可以准确查看程序尝试查看的位置。这将帮助您调整代码以定位正确的文件夹。