为什么我的代码给出IOException(系统找不到指定的文件)?

时间:2015-12-08 10:52:41

标签: java file-io filenotfoundexception

public static void update(String fileName, String idType, String id, String updatedData[] ) throws Exception{

    char fileOutput[];
    String wholeData;
    String tkn, idtp, idf;      

    File myFileU  = null;
    File tempFile = null;
    FileReader finU = null;
    FileWriter fwU = null;
    Scanner frU = null;



    try{

        finU = new FileReader(myFileU = new File("\\" +fileName + ".txt"));
        fileOutput = new char[(int) myFileU.length()];
        finU.read(fileOutput);
        finU.close();

        //System.out.println(myFileU.getCanonicalPath());

        tempFile = new File("temp.txt");
        tempFile.createNewFile();
        fwU = new FileWriter(myFileU, false);


         wholeData = new String(fileOutput);

        frU = new Scanner(wholeData);

        frU.useDelimiter(";");

        while(frU.hasNext()){   
            idtp = frU.next();
            idf = frU.next();
            if(idtp.equals(idType) && idf.equals(id)){
                fwU.write( ";" + idType + ";" + id);
                for(int i=0; i< updatedData.length; i++){
                    fwU.write(";" + updatedData[i]);

                }
                fwU.write(";" + System.lineSeparator());

                frU.nextLine();
            }
            if(!idf.equals(id))
            fwU.write(";" + idtp + ";" + idf);
            tkn = frU.nextLine();
            fwU.write(tkn);
            fwU.write(System.lineSeparator());
            if(idf.equals(autoSerial(fileName, idType)))
                break;
        }

        fwU.flush();
        fwU.close();


        }
    catch(IOException e){
        System.out.println("error in opening the file U " + e);     
    }
    finally{

    }
}

上述方法旨在覆盖正在读取的文件。它应该做的是从文件中读取,用更新的数据替换用户指定的记录,并用更新的数据覆盖文件,但它不会覆盖文件,而是在文件的末尾附加更新的记录,给出(虽然如果我将数据保存到单独的文件中,它会正确地保存更新的数据):

java.io.FileNotFoundException: \Schedules.txt (The system cannot find the file specified)

虽然文件在那里并且它也从中读取了数据?任何线索?我是Java的新手!

1 个答案:

答案 0 :(得分:1)

您的问题显然是使用Java打开文件。您似乎对文件路径感到困惑。以下是如何使用不同位置等打开文件的示例。

我们假设您的文件名为abc.txt,并且位于C:\目录下的test_stackoverflow驱动器中,那么您的路径将如下所示:

FileReader reader = new FileReader(new File("C:\\test_stackoverflow\\abc.txt")); 

注意双斜线,即跳过斜线的方式。

如果您的文件与java类位于同一目录中,则路径如下所示,没有任何斜杠

FileReader reader = new FileReader(new File("test.txt")); 

假设你想要阅读的文件是上面的一个文件夹(src),那么你的java类就是

FileReader reader = new FileReader(new File("src\\test.txt"));

如果您使用的是OSX,那么您可以执行以下操作

FileReader reader = new FileReader(new File("/Users/Raf/Desktop/abc.txt"));