programing

스캐너와버퍼리더

goodsources 2022. 8. 21. 20:01
반응형

스캐너와버퍼리더

를 읽는 인 두 은 '자바'를 사용하는 입니다.Scanner ★★★★★★★★★★★★★★★★★」BufferedReader 그 「미국의 나라」의 「미국의 나라」도 있습니다.BufferedReader는 버퍼를 사용하여 파일을 효율적으로 읽고 물리적 디스크 작업을 방지합니다.

질문은 다음과 같습니다.

  • Scanner 않게 BufferedReader
  • ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★.Scanner에 걸쳐서BufferedReader니면면 대대?

Scanner할 때 됩니다.BufferedReader는 스트림을 읽기만 하고 특별한 해석은 하지 않습니다.

할 수 요.BufferedReader a까지scanner해석할 문자의 소스로서 사용됩니다.

현재 최신 JDK6 릴리즈/빌드(b27)에서는 (8192자)에 비해 버퍼(1024자)가 작지만 충분합니다.

「」를 합니다.Scanner파일을 해석하려면 ,BufferedReader파일을 한 줄씩 읽으려면 이 옵션을 클릭하십시오.앞서 링크된 API 설명서의 소개 텍스트도 참조하십시오.

  • 구문 분석 = 지정된 입력을 토큰(부품)으로 해석합니다.int, string, decimal 등의 특정 부분을 직접 반환할 수 있습니다.자세한 것은 이쪽도 참조해 주세요.nextXxx()Scanner
  • 읽기 = 덤 스트리밍.모든 문자가 계속 표시되므로 유용한 내용을 일치시키거나 작성하려면 수동으로 검사해야 합니다.하지만 어차피 그렇게 할 필요가 없다면, 읽는 것으로 충분합니다.

링크를 참조해 주세요.여기서 인용하겠습니다.

BufferedReader는 언더링 스트림에서 효율적으로 읽기 위한 단순한 클래스입니다.일반적으로 FileReader와 같은 Reader의 각 읽기 요청은 해당 읽기 요청을 기본 스트림으로 만듭니다.read() 또는 readLine()을 호출할 때마다 파일에서 바이트가 읽혀지고 문자로 변환되어 반환될 수 있습니다.이것은 매우 비효율적일 수 있습니다.BufferedReader에서 Reader가 뒤틀리면 효율성이 크게 향상됩니다.

BufferedReader는 동기화되므로 여러 스레드에서 BufferedReader 읽기 작업을 안전하게 수행할 수 있습니다.

반면 스캐너에는 훨씬 더 많은 치즈가 내장되어 있어 BufferedReader가 할 수 있는 모든 것을 할 수 있고 효율도 동일합니다.또한 스캐너는 기본 스트림에서 정규 표현을 사용하여 기본 유형 및 문자열을 구문 분석할 수 있습니다.또한 선택한 구분 기호를 사용하여 기본 스트림을 토큰화할 수도 있습니다.딜리미터를 무시하고 기본 스트림의 정방향 검색을 수행할 수도 있습니다.

그러나 스캐너는 스레드 세이프가 아니기 때문에 외부에서 동기화해야 합니다.

BufferedReader와 스캐너 중 어떤 것을 사용할지는 쓰는 코드에 따라 달라집니다.단순 로그 리더를 쓰는 경우 Buffered Reader가 적합합니다.그러나 XML 파서를 쓰는 경우 스캐너가 더 자연스러운 선택입니다.

입력 내용을 읽을 때도 한 줄씩 사용자 입력을 받아들이고 파일에 추가만 하고 싶다면 Buffered Reader로 충분합니다.한편, 사용자 입력을 여러 옵션이 있는 명령으로 받아들이고, 지정한 명령과 옵션에 따라 다른 작업을 수행하려는 경우에는 스캐너가 적합합니다.

  1. BufferedReader는 스캐너보다 버퍼 메모리가 상당히 큽니다.BufferedReader " "를 사용합니다.Scanner스트림에서 특정 유형의 토큰을 해석하는 경우.

  2. Scanner을 원시 할 수 있습니다.또, 「」는, 「」의 「데이터 타입의 해석」을 실시합니다.BufferedReader스트링

  3. BufferedReader하고 있습니다.Scanner렇지않않 않않않다다BufferedReader여러 스레드로 작업하는 경우.

  4. Scanner 중에 을 숨깁니다.BufferedReader시시던던던던다다

사용할 것을 권장합니다.BufferedReader이치노 ScannerIOException 동시에BufferedReader시시던던던던다다

Buffered Reader와 스캐너의 차이는 다음과 같습니다.

  1. BufferedReader는 동기화되어 있지만 스캐너가 동기화되어 있지 않습니다.
  2. BufferedReader는 스레드 세이프이지만 스캐너는 스레드 세이프가 아닙니다.
  3. BufferedReader는 버퍼 메모리가 더 크지만 스캐너의 버퍼 메모리는 더 작습니다.
  4. BufferedReader는 빠르지만 스캐너 실행 속도는 느립니다.
  5. 콘솔에서 행을 읽기 위한 코드:

Buffered Reader:

InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String st = br.readLine();
       
// You can make the object InputStreamReader object inside the BufferReader method.
BufferReader br = new BufferedReader(InputStreamReader(System.in));
String st = br.readLine();

// You can even inspect the type of the input stream manually by using Parse method which accepts string parameter.
int x = Integer.parseInt(br.readLine());

// Or you can pass the object directly.
int x = Integer.parseInt(st);

스캐너:

Scanner sc = new Scanner(System.in);
String st = sc.nextLine();

BufferedReader스캐너의 차이점은 다음과 같습니다.

  1. BufferedReader는 데이터를 읽지만 스캐너가 데이터를 해석합니다.
  2. 문자열은 BufferedReader를 통해서만 읽을 수 있으며 스캐너를 사용하면 다음과 같은 다양한 데이터 유형을 읽을 수 있습니다.int.
  3. BufferedReader는 스캐너보다 오래된 것으로, 에 추가되었습니다.JDK 1.1스캐너가 에 추가되어 있는 동안JDK 5어주주다
  4. BufferedReader의 버퍼 크기는 스캐너의 1KB에 비해 큽니다(8KB).
  5. BufferedReader는 긴 문자열로 파일을 읽는 데 더 적합하며, Scanner는 명령 프롬프트에서 작은 사용자 입력을 읽는 데 더 적합합니다.
  6. BufferedReader는 동기화되어 있지만 스캐너는 동기화되어 있지 않으므로 여러 스레드 간에 스캐너를 공유할 수 없습니다.
  7. BufferedReader는 구문 분석에 시간이 걸리지 않으므로 스캐너보다 빠릅니다.
  8. 스캐너에 비해 Buffered Reader가 조금 더 빠릅니다.
  9. BufferedReader의 출처java.io패키지(스캐너 원본인 경우)java.util★★★★★★★★★★★★★★★★★★.

포인트에 따라 선택할 수 있습니다.

읽어주셔서 감사합니다!

주요 차이점:

  1. 스캐너

  • 정규식을 사용하여 원시 유형 및 문자열을 구문 분석할 수 있는 간단한 텍스트 스캐너입니다.
  • 스캐너는 기본적으로 공백과 일치하는 구분자 패턴을 사용하여 입력을 토큰으로 나눕니다.그런 다음 다양한 다음 방법을 사용하여 결과 토큰을 다른 유형의 값으로 변환할 수 있습니다.

예:

 String input = "1 fish 2 fish red fish blue fish";
 Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
 System.out.println(s.nextInt());
 System.out.println(s.nextInt());
 System.out.println(s.next());
 System.out.println(s.next());
 s.close(); 

는 다음의 출력을 출력합니다.

1
2
red
blue

이 코드에서도 같은 출력을 생성할 수 있습니다.이 코드에서는 정규 표현을 사용하여 4개의 토큰을 모두 한 번에 해석합니다.

 String input = "1 fish 2 fish red fish blue fish";

 Scanner s = new Scanner(input);
 s.findInLine("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)");
 MatchResult result = s.match();
 for (int i = 1; i <= result.groupCount(); i++) {
     System.out.println(result.group(i));
 }
 s.close();

  1. Buffered Reader:
  • 문자, 배열 및 행을 효율적으로 읽을 수 있도록 문자 입력 스트림, 버퍼링 문자에서 텍스트를 읽습니다.

  • 버퍼 크기를 지정하거나 기본 크기를 사용할 수 있습니다.기본값은 대부분의 경우 충분히 큽니다.

일반적으로 Reader에서 이루어지는 각 읽기 요청은 기본 문자 또는 바이트 스트림에서 대응하는 읽기 요청을 발생시킵니다.따라서 FileReaders나 InputStreamReaders 등 read() 작업이 비용이 많이 드는 Reader 주위에 BufferedReader를 랩하는 것이 좋습니다.예를들면,

BufferedReader in = new BufferedReader(new FileReader("foo.in"));
 

는 지정된 파일로부터의 입력을 버퍼링합니다.버퍼링이 없으면 read() 또는 readLine()을 호출할 때마다 파일에서 바이트가 읽혀지고 문자로 변환되어 반환되므로 매우 비효율적일 수 있습니다.텍스트 입력에 DataInputStreams를 사용하는 프로그램은 각 DataInputStream을 적절한 BufferedReader로 대체하여 현지화할 수 있습니다.

사용된 소스: https://docs.oracle.com

자바에서는 다음과 같은 다양한 입력 방법이 있습니다.

1) BufferedReader 2) 스캐너 3) 명령줄 인수

BufferedReader 문자 입력 스트림에서 텍스트를 읽고 문자, 배열 및 행을 효율적으로 읽을 수 있도록 버퍼링합니다.

여기서 스캐너는 정규 표현을 사용하여 원시 유형 및 문자열을 구문 분석할 수 있는 단순한 텍스트 스캐너입니다.

간단한 로그 판독기를 쓰는 경우 버퍼된 판독기가 적합합니다.XML 파서를 쓰는 경우 스캐너가 더 자연스러운 선택입니다.

자세한 내용은 다음을 참조하십시오.

http://java.meritcampus.com/t/240/Bufferedreader?tc=mm69

다음 답변은 콘솔 읽기: Java Scanner vs Buffered Reader에서 가져옵니다.

콘솔에서 입력을 읽을 때는 두 가지 옵션이 있습니다.최초 사용Scanner, 다른 용도BufferedReader둘 다 특징이 달라요.사용방법의 차이입니다.

Scanner지정된 입력이 토큰으로 처리됩니다. BufferedReader문자열로 입력된 내용을 한 줄씩 읽어 보십시오. Scanner그 자체는 다음과 같은 해석 기능을 제공합니다.nextInt(),nextFloat().

그런데 다른 점들은 뭐가 다른가요?

  • 스캐너가 지정된 입력을 토큰으로 처리했습니다.스트림 라인/스트링으로서의 BufferedReader.
  • regex를 사용하여 지정된 입력에 대한 스캐너 토큰화.BufferedReader를 사용하려면 추가 코드를 작성해야 합니다.
  • BufferedReader스캐너보다 빠릅니다* 포인트 번호2
  • 스캐너가 동기화되지 않았습니다. BufferedReader가 동기화되었습니다.

Scanner이후부터 계속되었다JDK 1.5그 이상입니다.

스캐너 또는 버퍼 리더는 언제 사용해야 합니까?

토큰화된 것을 사용하는 것과 스트림 라인을 사용하는 것의 두 가지 주요 차이점을 살펴보세요.구문 분석 기능이 필요한 경우Scanner는 '아까', '', '나'가 더 편해요.BufferedReader 할 을 읽습니다BufferedReader파일을 읽을 때 버퍼 메모리를 사용하여 물리적 드라이브 사용량을 줄이기 때문입니다. ㄴㄴㄴ데 하다'를 해도 됩니다.BufferedReaderScanner.

는 는는더 prefer prefer iScanner체크된 예외를 발생시키지 않기 때문에 사용방법에 따라 코드가 보다 합리화되기 때문입니다.

  1. BufferedReader는 아마도 더 나은 성능을 제공할 것입니다(스캐너는 InputStreamReader를 기반으로 하기 때문에 룩소스). oops, 사용하는 파일에서 데이터를 읽기 위해nio했을 때nio.BufferedReader 파일 nio에 조금 더 나은 퍼포먼스를 나타냅니다.
  2. 파일에서 데이터를 읽으려면 Apache Commons IO를 사용해 보십시오.

언급URL : https://stackoverflow.com/questions/2231369/scanner-vs-bufferedreader

반응형