0

我正在做的是创建两个节点,它们将通过文本文件相互通信,例如:节点 0 是节点 1 的邻居,反之亦然。节点 0 将打开文本文件 from0to1.txt,节点 1 将打开文本文件 from1to0.txt。

我在这段代码中验证了这些文件的创建:

for(Integer i: neighbors){
        File file = new File("from" + myId + "to" + i + ".txt");
        try{
            boolean fileMade = file.createNewFile();
            if(!fileMade){
                System.err.println("Node " + myId + ": File could not be created.\n Please delete the files before trying again."); 
                System.exit(1);
            }
            /**
            boolean fileMade = file.createNewFile();
            while(!fileMade){
                System.out.println("Node " + myId + ": File is already present.");
                System.out.println("Node " + myId + ": Deleting file...");
                file.delete();
                System.out.println("Node " + myId + ": File deleted");
                System.out.println("Node " + myId + ": Trying again...");
                fileMade = file.createNewFile();
            }
            */
            System.out.println("Node " + myId + ": File " + file.getName() + " successfully created.");
        }
        catch(Exception e){
            e.printStackTrace();
        }

打开这些文件后,我将打开它们以写入它们。每个节点将从这些文本文件的“通道”中感知数据。阅读时,我使用 RandomAccessFile 打开这些文本文件。当我写作时,我用 FileWriter/BufferedWriter 打开这些文本文件。

问题是当我尝试打开文本文件以使用 RandomAccessFile 读取时,它会引发 FileNotFoundException。我试图运行 f.exist() 并且它也显示为假。为什么它不创建文件/不承认文件存在?

这是代码:

for(Integer n: neighbors){
        RandomAccessFile raf = null;
        File f = new File("from" + n + "to" + nodeID + ".txt");
        System.out.println(f.exists());
        System.out.println(f.canRead());
        //FileReader fr = null;
        try{
            System.out.println("Trying to open file: " + "from" + n + "to" + nodeID + ".txt");
            //System.out.println("Node " + nodeID + ": Setting up Random Access File");
            //fr = new FileReader(new File("from" + n + "to" + nodeID + ".txt"));
            //System.out.println(fr.read());
            //fr.close();
            raf = new RandomAccessFile(f, "r");
            raf.seek(offsetList.get(n));
            /**
4

0 回答 0