Java가 콘솔에서 데이터를 읽는 몇 가지 방법 요약

여기에는 Java에서 콘솔에서 정보를 읽는 몇 가지 방법이 기록되어 있습니다.
(1) JDK 1.4(JDK 1.5 및 JDK 1.6도 모두 호환됨)

public class TestConsole1 {
  public static void main(String[] args) {
    String str = readDataFromConsole("Please input string:);
    System.out.println("The information from console: + str);
  }

  /**
   * Use InputStreamReader and System.in to read data from console
   * 
   * @param prompt
   *      
   * @return input string
   */
  private static String readDataFromConsole(String prompt) {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String str = null;
    try {
      System.out.print(prompt);
      str = br.readLine();

    } catch (IOException e) {
      e.printStackTrace();
    }
    return str;
  }
}
(2) JDK 1.5(Scanner를 사용하여 읽기)

public class TestConsole2 {
  public static void main(String[] args) {
    String str = readDataFromConsole("Please input string:");
    System.out.println("The information from console:" + str);
  }

  /**
   * Use java.util.Scanner to read data from console
   * 
   * @param prompt
   * 
   * @return input string
   */
  private static String readDataFromConsole(String prompt) {
    Scanner scanner = new Scanner(System.in);
    System.out.print(prompt);
    return scanner.nextLine();
  }
}
Scanner는 또한 파일을 스캔하여 안에 있는 정보를 읽고 원하는 형식으로 변환할 수 있습니다. 예를 들어 "22.23.33.334.5done"과 같은 데이터 구화는 다음과 같습니다.

public class TestConsole4 {

  public static void main(String[] args) throws IOException {
    FileWriter fw = new FileWriter("num.txt");
    fw.write("2 2.2 3.3 3.33 4.5 done");
    fw.close();

    System.out.println("Sum is "+scanFileForSum("num.txt"));
  }

  public static double scanFileForSum(String fileName) throws IOException {
    double sum = 0.0;
    FileReader fr = null;
    try {
      fr = new FileReader(fileName);
      Scanner scanner = new Scanner(fr);
      
      while (scanner.hasNext()) {
        if (scanner.hasNextDouble()) {
          sum = sum + scanner.nextDouble();

        } else {
          String str = scanner.next();

          if (str.equals("done")) {
            break;
          } else {
            throw new RuntimeException("File Format is wrong!");
          }

        }
      }

    } catch (FileNotFoundException e) {
      throw new RuntimeException("File " + fileName + " not found!");
    } finally {
      if (fr != null)
        fr.close();
    }
    return sum;
  }
}
(3) JDK 1.6(java.io.Console을 사용하여 읽기)
JDK6에서 자바를 제공했습니다.io.Console 클래스 전용으로 문자 기반 콘솔 장치에 액세스합니다.
프로그램이 Windows 아래의 cmd나 Linux 아래의 Terminal과 상호작용하려면 Console 클래스로 대체할 수 있습니다.(System.in과 System.out 유사)
그러나 우리는 항상 사용할 수 있는 Console을 얻을 수 있는 것은 아니다. JVM에 사용할 수 있는 Console이 있는지의 여부는 기본 플랫폼과 JVM이 어떻게 호출되는지에 의존한다.
만약 JVM이 상호작용 명령행(예를 들어 Windows의 cmd)에서 시작되고 입력과 출력이 다른 곳으로 바뀌지 않았다면 사용할 수 있는 콘솔 실례를 얻을 수 있을 것이다.
IDE를 사용하는 경우 Console 인스턴스를 가져올 수 없습니다. IDE 환경에서 표준 입력 및 출력 흐름을 재정의하거나 시스템 콘솔의 입력 출력을 IDE 콘솔로 재정의하기 때문입니다.

public class TestConsole3 {
  public static void main(String[] args) {
    String str = readDataFromConsole("Please input string:");
    System.out.println("The information from console:" + str);
  }

  /**
   * Use java.io.console to read data from console
   * 
   * @param prompt
   * 
   * @return input string
   */
  private static String readDataFromConsole(String prompt) {
    Console console = System.console();
    if (console == null) {
      throw new IllegalStateException("Console is not available!");
    }
    return console.readLine(prompt);
  }
}
Console 클래스의 또 다른 특징은 비밀번호 (입력에 회신이 없음) 등 보안 문자를 처리하는 것이다.다음과 같은 코드를 사용하여 readPassword() 메서드를 제공합니다.

public class TestConsole5 {
  
   public static void main(String[] args) {
      Console console = System.console();
      if (console == null) {
        throw new IllegalStateException("Console is not available!");
      }
      
      while(true){
      String username = console.readLine("Username: ");
      char[] password = console.readPassword("Password: ");

      if (username.equals("Chris") && String.valueOf(password).equals("GoHead")) {
       console.printf("Welcome to Java Application %1$s.
", username); // , , password = null; System.exit(-1); } else { console.printf("Invalid username or password.
"); } } } }
다음은 여러분께 가져온 Java가 컨트롤러에서 데이터를 읽는 몇 가지 방법으로 정리한 모든 내용입니다. 여러분께 도움이 되고 많은 응원 부탁드립니다~

좋은 웹페이지 즐겨찾기