我正在努力完成一个使用替换密码对txt文件进行编码和解码的程序。经过相当多的工作,我的计划完成了。该程序通过首先询问用户他/她是否想要编码或解码文件来起作用。在回答此问题后,程序会提示用户输入正在输入的文件的名称(用于en / decoding),以及程序将新的/已解码文本发送到的输出文件的名称。看起来有点像这样:
(换行时间隔为双倍)
开始计划
您是否希望编码或解码:(用户进入控制台......例如,让我们使用编码)
输入输入文件的名称:(用户在此输入文件名称)
输入输出文件的名称:(用户输入程序创建的输出文件的名称)
计划结束
一切正常。我已经创建了各种方法来进行编码和解码,但考虑到其余部分,我遇到了一个应该很容易的部分。
在我在较大程序中编写的方法中,我有一个提示用户输入输出文件名称的方法(粘贴在下面)。但是,我想写的是,如果用户输入已存在的文件的名称,而不是覆盖它,我想提示用户并询问他/她是否确定要通过单击覆盖该文件" Y"或" n" (将使用toLowerCase()
方法确保案例值正常。
我知道我想使用while loop
来解决这个问题,但是在确定哪里(尝试/捕获部分似乎给我带来麻烦)时遇到了很多麻烦。任何人都可以向我提供有关实现while loop
的最佳方法的指导,以便用户有无限数量的选项来输入输出文件的名称吗?非常感谢。
(我总是可以粘贴整个代码......看起来好像不需要)。
public static PrintStream getOutputPrintStream(Scanner console){
PrintStream output = null;
while (output == null) {
System.out.print("Enter output file: ");
String fileName = console.next();
try {
output = new PrintStream(new File(fileName));
}
catch (FileNotFoundException e) {
System.out.println(e.getMessage());
}
}
return output;
}
答案 0 :(得分:1)
要检查文件是否存在,您可以使用exists()
- 方法。因此,您需要先创建一个File
对象。像
File f = new File(fileName);
if(!f.exists()){ // if the file does not exist
// Your try-catch block here
}else{ // this means that there is a file with the given name
System.out.println("You really want to override? y/n");
String r = console.next();
if(r.toLowerCase().equals("y")){
// Your try-catch-block again
}else{
// Nothing here
// to restart the loop.
}
}
最好是在
之后实现它String fileName = console.next();
无论如何,您甚至可以将try-catch
- 块提取到班级中的新功能。