Java 是否可以使用同一FileWriter文件并通过多种方法写入?
我从用户那里接收一个输入文件和一个输出文件,并试图从main方法和towerOfHanoiMoves方法写入输出文件。我试图将输出变量作为参数传递给towerOfHanoiMoves方法,但始终出现错误 我收到的错误是:Java 是否可以使用同一FileWriter文件并通过多种方法写入?,java,methods,fileoutputstream,printwriter,Java,Methods,Fileoutputstream,Printwriter,我从用户那里接收一个输入文件和一个输出文件,并试图从main方法和towerOfHanoiMoves方法写入输出文件。我试图将输出变量作为参数传递给towerOfHanoiMoves方法,但始终出现错误 我收到的错误是: Exception in thread "main" java.lang.Error: Unresolved compilation problem: Unhandled exception type IOException at TowerofHanoiRecurs
Exception in thread "main" java.lang.Error: Unresolved compilation problem: Unhandled exception type IOException
at TowerofHanoiRecursive.towerOfHanoiMoves(TowerofHanoiRecursive.java:72)
at TowerofHanoiRecursive.main(TowerofHanoiRecursive.java:41)
有没有一种方法可以让我从两个不同的方法写入同一个输出文件
我尝试过使用PrintWriter,但这给了我同样的东西。
我也尝试过用towerOfHanoiMoves方法冲洗和关闭外流,但也不起作用。我还导入了所有必要的java.io文件,但由于某些原因,它们没有显示在这里
public class TowerofHanoiRecursive{
public static void main(String[] args) throws IOException, EmptyFile,
FileNotFoundException{
int n; //number of disks
String rodLeft = "A", rodRight = "C", rodMiddle = "B";
FileReader inputStream = null;
FileWriter outputStream = null;
BufferedReader str = null;
try {
outputStream = new FileWriter(args[1]); // output file
inputStream = new FileReader(args[0]); // input file
str = new BufferedReader(inputStream);
String nextLine;
File newFile = new File(args[0]);
if (newFile.length()==0) { //Tests if input file is empty
//if file is empty, the EmptyFile exception will be thrown
throw new EmptyFile("Input file is empty");
}
while ((nextLine = str.readLine()) != null) {
outputStream.write("----------------------------------------"
+ "------------------------\n");
outputStream.write("Number of Disks in Starting Tower = "
+ nextLine);
n = Integer.parseInt(nextLine);
towerOfHanoiMoves(n, rodLeft, rodRight, rodMiddle,
outputStream);
}
}catch (FileNotFoundException e) {
outputStream.write("Input file not found.);
outputStream.flush();
if (outputStream != null) outputStream.close();
}catch (EmptyFile e) {
outputStream.write(e.getMessage());
outputStream.flush();
if (inputStream != null) inputStream.close();
if (outputStream != null) outputStream.close();
str.close();
} finally {
outputStream.write("");
outputStream.write("\n\nSuccess!);
outputStream.flush();
if (inputStream != null) inputStream.close();
if (outputStream != null) outputStream.close();
str.close();
}
}
public static void towerOfHanoiMoves(int n, String leftRod, String
rightRod, String MidRod, FileWriter outStream) {
if (n == 1) {
outStream.write("Move disk 1 from ....");
}
}
}
具体的错误是
write()
方法可能引发IOException
。因此,必须捕获或声明该异常。因此,可以修改towerOfHannoiMoves
来抛出IOException
public static void towerOfHanoiMoves(int n,
String leftRod,
String rightRod,
String MidRod,
FileWriter outStream)
throws IOException
另一个注意事项:发布的代码缺少一些右引号。例如:
outputStream.write("Input file not found.);
你愿意分享一下错误吗?因为您完全可以将Streams/FileWriter/etc传递到一旁:在发生一个异常的情况下,您关闭
outputStream
,然后尝试写入finally
块中现在关闭的流。这种方法可能有问题。嗨,Kevin,这是我一直得到的错误:线程“main”java.lang中的异常。错误:未解决的编译问题:TowerofHanoiRecursive.towerOfHanoiMoves(TowerofHanoiRecursive.java:72)处TowerofHanoiRecursive.main(TowerofHanoiRecursive.java:41)的未处理异常类型IOException@kevino错误也发生在towerOfHanoiMoves方法中,这就是问题所在!非常感谢你!很高兴这有帮助。如果你能考虑接受这个答复,我将不胜感激。