Java 为什么赢了';接球区不跑了吗?
我使用以下方法将数组写入文本文件。如果给定了一个现有的文本文件,那么它可以正常工作,但是如果给定了一个不存在的文件,try-catch都不会运行代码来重新启动该方法。我没有收到任何错误或任何东西,但是catch块不会运行。我不认为我需要捕捉IOException,但如果我不这样做,代码甚至不会运行。所以,是的,有人知道我怎样才能让它工作吗 编辑:忘记提到getInput方法提示用户输入Java 为什么赢了';接球区不跑了吗?,java,Java,我使用以下方法将数组写入文本文件。如果给定了一个现有的文本文件,那么它可以正常工作,但是如果给定了一个不存在的文件,try-catch都不会运行代码来重新启动该方法。我没有收到任何错误或任何东西,但是catch块不会运行。我不认为我需要捕捉IOException,但如果我不这样做,代码甚至不会运行。所以,是的,有人知道我怎样才能让它工作吗 编辑:忘记提到getInput方法提示用户输入 private static void openFileWriter(String prompt, boole
private static void openFileWriter(String prompt, boolean append, int wordsperline, String[] story) {
try {
try {
save = new PrintWriter(new FileWriter(getInput(prompt), append));
wordsperline = 0;
save.println("");
save.println("");
save.println("Story start");
for (int x = 0; x <= story.length-1; x++) {
if (story[x] == null) {
} else {
if (wordsperline == 21) {
save.println(story[x]);
wordsperline = 0;
} else {
save.print(story[x]);
wordsperline++;
}
}
}
save.close();
} catch (FileNotFoundException e1) {
openFileWriter("File not found", append,wordsperline,story);
}
} catch (IOException e) {
// TODO Auto-generated catch block
openFileWriter("File not found", append,wordsperline,story);
}
}
private static void openFileWriter(字符串提示符、布尔追加、int-wordsperline、字符串[]故事){
试一试{
试一试{
save=newprintwriter(newfilewriter(getInput(prompt),append));
wordsperline=0;
保存.println(“”);
保存.println(“”);
save.println(“故事开始”);
对于(int x=0;x如果文件不存在,则无法写入该文件,在catch块中,您正试图将错误写入不存在的文件。此外,我认为这里只需要一个catch块,请注意,If语句块之一为空
试试这个:
try
{
save = new PrintWriter(new FileWriter(getInput(prompt), append));
wordsperline = 0;
save.println("");
save.println("");
save.println("Story start");
for(int x = 0; x <= story.length-1; x++)
{
if (story[x] == null)
{
}
else
{
if (wordsperline == 21)
{
save.println(story[x]);
wordsperline = 0;
}
else
{
save.print(story[x]);
wordsperline++;
}
}
}
save.close();
}
catch (FileNotFoundException e1)
{
System.err.println(e1.getMessage());
}
catch (IOException e)
{
System.err.println(e.getMessage());
}
试试看
{
save=newprintwriter(newfilewriter(getInput(prompt),append));
wordsperline=0;
保存.println(“”);
保存.println(“”);
save.println(“故事开始”);
对于(int x=0;x请尝试此版本,并在出现异常时发送堆栈跟踪:
public static List<String> splitByLength(String filename, int length) {
List<String> splitWords = new ArrayList<String>();
for (int i = 0; i < str.length(); i += length) {
splitWords
.add(str.substring(i, Math.min(str.length(), i + length)));
}
return splitWords;
}
private static void openFileWriter(String prompt, boolean append,
int wordsperline, String[] story) {
PrintWriter save = null;
try {
save = new PrintWriter(new FileWriter("c:\\test.txt", append));
wordsperline = 0;
save.println("");
save.println("");
save.println("Story start");
for (int x = 0; x <= story.length - 1; x++) {
if (story[x] != null) {
List<String> splitWords = splitByLength(story[x], 21);
for (String line : splitWords) {
save.println(line);
}
}
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (save != null) {
save.close();
}
}
}
公共静态列表splitByLength(字符串文件名,整数长度){
List splitWords=new ArrayList();
对于(int i=0;i
从施工文件中引用:
抛出:
IOException—如果命名文件存在,但它是目录而不是常规文件,不存在但无法创建,或者由于任何其他原因无法打开
如果您将一个不存在的文件名传递给它,但该文件名在您有写入权限的位置是合法的,那么它只会创建该文件
事实上,如果您向代码传递一个目录,它就会到达catch块(有点奇怪,在这种情况下,它会捕获一个FileNotFoundException
,而不是记录在案的IOException
)
要检查文件是否存在,请参见我的catch block中的,我再次调用该方法,以便用户可以尝试输入新的文本文件(getInput方法会提示用户输入,当然应该提到)在任何情况下,我放在catch块中的任何代码都不会运行。如何确定catch块中的代码根本不会运行?该方法不会再次运行,我尝试打印行(包括上面建议的行)。在任何情况下都不会发生任何事。@JKJones如果catch块中的代码没有执行,这告诉我没有引发异常。您可以发布第一次如何调用此方法吗?