static boolean exists(String location) {
File path = new File(location);
if (path.exists()){
return true;
}
else {
return false;
}
}
static boolean checkFile(String location1) throws IOException {
if (exists(location1)) {
File file = new File(location1);
RandomAccessFile raf = new RandomAccessFile(file, "r");
raf.seek(raf.length()-1);
byte lastByte = raf.readByte();
raf.close();
if (lastByte == 2) {
return true;
}
else {
return false;
}
}
else {
System.out.println("File does not exist, please try again: ");
Scanner sk = new Scanner(System.in);
String newLocation = sk.nextLine();
checkFile(newLocation);
sk.close();
return false;
С учетом сказанного, я проверил с отдельного метода ли даже существует файл, однако, я хотел бы прямо сейчас сжать выше в единый метод по каким-то рекурсивно используя пытаясь угадать поймать:Обработка FileNotFoundException с примерки уловом
static boolean checkFile(String location) {
try {
File file = new File(location);
}
catch (FileNotFoundException e) {
System.out.println("File does not exist, please try again: ");
Scanner sk = new Scanner(System.in);
String newLocation = sk.nextLine();
checkFile(newLocation);
}
//the following if-sentence checking whether some byte checks up.
}
первая проблема: как я могу создать новый файл произвольного доступа, используя File file
внутри попробовать? Я попытался инициализировать его перед попыткой File file = null;
, но затем он выбрасывает NullPointer, потому что после того, как он поймает исключение, метод вызывается снова, и файл будет автоматически иметь значение null.
Другая идея состояла в том, чтобы try-catch
внутри do-while
-loop, но тогда я думал о том, что делать, а что? Я должен был проверить, существует ли файл, учитывая, что это то, что я уже делаю с try-catch
, он становится излишним.
Что можно сделать с try-catch
до тех пор, пока я ввожу путь, который не является файлом, а затем приступайте к предложению if
всего одним способом?
Вы пытаетесь использовать try-catch? Эта проблема намного проще без нее. –
Да, это специально сказано, чтобы использовать try-catch для этой проблемы, хотя сам я тоже считаю это немного странным, потому что не было бы проще иметь метод, который проверяет существование файла, когда у нас есть n методов что все делают разные вещи с файлами? –
ничего не говорится о «ответе», но я просто не могу его отпустить: подумайте о конденсации «if/else» в 'exists', чтобы быть' return (новый File (location)). Exists(); ' – MadConan