Я пытаюсь отправить файл в качестве параметра методу, но не знаю, как это сделать?

#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.