java.io.FileNotFoundException: (设备未就绪。)
  由于重装了系统,重新装了jdk和eclipse,再次打开eclipse的时候,给之前的project重新导入了新安装的jdk,但是仍然有红色的感叹号,以下是运行时的报错:
        Exception in thread "main" java.io.FileNotFoundException: G:\recommendation\KNN\ratings.dat (设备未就绪。)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at java.io.FileReader.<init>(FileReader.java:58)
at KNN.KNNalgorithm.trainMatrix(KNNalgorithm.java:314)
at KNN.KNNalgorithm.main(KNNalgorithm.java:394)
![图片说明](https://img-ask.csdn.net/upload/201510/30/1446209657_149269.png)


    以下是导入文件时的代码:
String filePath = "C:\\Users\\Administrator\\Desktop\\ratings.dat";
    FileReader fr=new FileReader(filePath);
    BufferedReader br=new BufferedReader(fr);
    double ratio=0.8;
    String line="";
    //确定uid_max和oid_max,确定数组维度
    List<String[]> allrecord=new ArrayList<String[]>();
    while((line=br.readLine())!=null){
        String[] temp=line.split("::");
        allrecord.add(temp);
        if(uid_max<Integer.parseInt(temp[0])) uid_max=Integer.parseInt(temp[0]);
        if(oid_max<Integer.parseInt(temp[1])) oid_max=Integer.parseInt(temp[1]);
    }
    br.close();
    fr.close(); 

最后重新建立了一个project,复制粘贴了原来的代码运行成功了,不知道上面的错误是因为什么,虽然最后问题解决了,但是还是想知道错误原因,希望得到各位的解答,非常感谢

4个回答

提示很清楚,没有找到文件,文件存在么?是dat后缀么

u011412768
_____miss 文件时存在的,提示的错误里面的G盘是我装系统之前运行正确的代码用的路径,重装后没有分盘,但是原来的盘改了,于是跟着改路径,结果就报了这种错。。。
接近 5 年之前 回复

图片说明

我觉得是因为你用的原来的工程编译后的代码,程序运行不是跟你的java文件有关的,而是编译好的class文件,如果没有重新编译会使用原来的,即会去找G盘的文件。你新建工程肯定要新编译的,问题解决。

u011412768
_____miss 有道理,谢谢你的解答,我可以试试按你说的去解决一下。
接近 5 年之前 回复

对于这种类似的问题,在异常中已经说得很清楚了,但是对于JDK的东西,只需要解压和设置环境变量即可,所以你完全可以安装多个JDK,删除的话也只
是把文件夹删掉而已,所以因为你文件是缺失的,所以建议你重新下载JDK,即可。

u011412768
_____miss 好像是jdk冲突了,在项目->属性里删掉了之前的那个jdk就好了
接近 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问