我正在做的是创建两个节点,它们将通过文本文件相互通信,例如:节点 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));
/**