Как проверить, существует ли файл при использовании сканера в Java - PullRequest
0 голосов
/ 06 ноября 2018

Итак, если вы перейдете к моему createdChoice методу, вы увидите, что я пытаюсь выяснить, как иметь тип User в файле и посмотреть, существует ли он.

Это то, что я имею до сих пор.

import java.io.File;
import java.io.FileNotFoundException; 
import java.util.Scanner;

public class MadLibs {

  public static void main(String [] args) throws FileNotFoundException {
    Scanner console = new Scanner(System.in);
    File madLibFile = new File("/Users/adanvivero/IdeaProjects/Assignment 4/src/mymadlib.txt");
    Scanner madLib = new Scanner(System.in);

    String choice = menu(console);
    if(choice.equals("c")) {
      createdChoice(madLib);
    }
  }

  public static void createdChoice(Scanner madLib) throws FileNotFoundException {
    File madLibFile = new File("/Users/adanvivero/IdeaProjects/Assignment 4/src/mymadlib.txt");
    Scanner input = new Scanner(System.in);
    Scanner fileName = new Scanner(madLibFile);
    System.out.print("Input file name: ");
    String fileAccess = input.next();
    //fileName = madLibFile;
    if(fileAccess.equals(fileName)) {
        System.out.print("Well this file exists, but I don't know how to make it into a scanner");
    }
  }
}

Надеюсь, это имеет смысл. Оставить отзыв

1 Ответ

0 голосов
/ 07 ноября 2018

Чтобы проверить, существует ли файл или каталог, обозначенный указанным путем, вы можете использовать exist():

public static void main(String[] args) {
  final File file  = new File("temp/foo.txt");
  if (file.exists()) {
    System.out.printf("File " + file.getName() + " exist !");
  }
}

Не давайте взглянем на наши Scanner:

public Scanner(File source) throws FileNotFoundException {}

Если вы передадите файл на сканер, который не существует - вы получите исключение.

Таким образом, чтобы убедиться, что файл существует в этом случае, вы можете:

public static void main(String[] args) {
  // let's say there is no such file
  final File file  = new File("temp/foo.txt");
  try {
    Scanner scanner = new Scanner(file); // this will fail if file does not exist
    // otherwise it exist and you can do what you want
  } catch (FileNotFoundException e) {
    // and here you can handle the case when file not exist
  }
}

Если вы имеете в виду, как проверить, может ли ваш сканер что-то получить, у сканера есть множество hasNext... методов. Как hasNext(), hasNextByte(), hasNextLine() и т. Д.

И прежде чем scanner.next() вам стоит проверить! например :

if (scanner.hasNext()) {
  String fileAccess = scanner.next();  
}

Эти строки в вашем коде неверны, потому что вы пытаетесь проверить, являются ли 2 разных типа String и Scanner equals(). Они никогда не являются.

// fileAccess is String and fileName is Scanner according to your code
if(fileAccess.equals(fileName)) {
  System.out.print("Well this file exists, but I don't know how to make it into a scanner");
}

Как бы я переписал ваш кусок кода (но не уверен, что понимаю, что именно он должен делать), просто в качестве примера:

public static void createdChoice() throws FileNotFoundException {
  File madLibFile = new File("/Users/adanvivero/IdeaProjects/Assignment 4/src/mymadlib.txt");
  if (madLibFile.exist()) {
    Scanner inScanner = new Scanner(System.in);
    Scanner fileScanner = new Scanner(madLibFile);
    System.out.println("Input file name: " + madLibFile.getName());
    if (inScanner.hasNext()) {
      String fileAccess = inScanner.next();
      // do whatever you need e.g
      if(fileAccess.equals(madLibFile.getName())) {
        // something here
      }
    } else {
      System.out.println("No more tokens to read !");  
    }
  } else {
    System.out.println("File mymadlib.txt does not exist !");
  }
}

Надеюсь, это как-то полезно.

Счастливого взлома :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...