#java #file #exception #java.util.scanner #reader
#Ява #файл #исключение #java.util.сканер #читатель
Вопрос:
public static void createFile() { File file = new File("C:\Users\egecoskun\Desktop\javafiles\ananınamı.txt"); try { if (file.createNewFile()) { System.out.println("Dosya olusturuldu!"); } else { System.out.println("Dosya zaten var!"); } } catch (IOException e) { e.printStackTrace(); } }
Вот мой метод создания файла для создания файла.
public static void readFile(File file) { try { Scanner reader = new Scanner(file); while(reader.hasNextLine()) { String line=reader.nextLine(); System.out.println(line); } } catch (FileNotFoundException e) { e.printStackTrace(); } }
и этот метод заключается в чтении файла, который я создаю.Но он должен принимать файл в качестве аргумента, но когда я пытаюсь запустить этот метод в Main
public static void main(String[] args) { createFile(); readFile(file); }
Ошибка, которую я получаю, заключается в том, что файл не может быть преобразован в переменную. Кто-нибудь заметил мою ошибку? Не могли бы вы объяснить это, пожалуйста.
Комментарии:
1. создайте файловый объект из метода CreateFile и передайте его в метод чтения
Ответ №1:
Верните объект file из функции CreateFile и передайте его функции ReadFile
public static File createFile() { File dir = new File("C:\Users\egecoskun\Desktop\javafiles"); if(dir.exists()) { dir.mkdirs(); } File file = new File(dir,"ananınamı.txt"); file.createNewFile(); return file; }
В вашей основной функции
File file = createFile(); readFile(file);
Ответ №2:
createFile
есть void
; это означает, что он ничего не возвращает. В этом случае вы хотите вернуть a File
. Нравится,
public static File createFile() { File file = new File("C:\Users\egecoskun\Desktop\javafiles\ananınamı.txt"); try { if (file.createNewFile()) { System.out.println("Dosya olusturuldu!"); return file; } else { System.out.println("Dosya zaten var!"); } } catch (IOException e) { e.printStackTrace(); } return null; }
Затем вам нужно присвоить результат вызова этого метода переменной. И вы должны убедиться, что это не null
так, прежде чем передать его readFile
кому-либо . Нравится,
File f = createFile(); if (f != null) { readFile(f); }
Обратите внимание, что на самом деле файл не будет содержать ничего для чтения. Он просто существует после того, как вы его создали.
Комментарии:
1. Спасибо за ваш ответ, Эллиот, но нужно ли мне возвращать значение null, которое меня немного смутило?
2. Да, вы должны вернуть значение null в случае, если директория не существует или может быть, вы можете проверить, существует ли директория, вы можете создать новую директорию и удалить оператор try catch
3. Пожалуйста, не учите новичков прискорбному стилю кода java. «распечатать трассировку стека и вернуть значение null» — это безумный способ справиться с IOExceptions в этом коде. Этот метод должен быть объявлен
throws IOException
, потому что подпись самого метода (его имя, аргументы, тип возвращаемого значения и javadoc) по своей сути подразумевает, что происходит ввод-вывод (поэтому исключение IOException не является деталью реализации, но присуще самой его природе).psv main
метод должен, как и почти всеmain
методы, быть объявленthrows Exception
. Меньше кода, лучший код, более чистый код, лучшее поведение. Беспроигрышный вариант.4. @rzwitserloot Этот код находится в вопросе, и я все еще не вижу смысла в чтении пустого файла.
5. Я не читаю пустой файл. У меня также есть метод файла записи, который вы не можете увидеть @ElliottFrisch.