스캐너와버퍼리더
를 읽는 인 두 은 '자바'를 사용하는 입니다.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로 충분합니다.한편, 사용자 입력을 여러 옵션이 있는 명령으로 받아들이고, 지정한 명령과 옵션에 따라 다른 작업을 수행하려는 경우에는 스캐너가 적합합니다.
BufferedReader
는 스캐너보다 버퍼 메모리가 상당히 큽니다.BufferedReader
" "를 사용합니다.Scanner
스트림에서 특정 유형의 토큰을 해석하는 경우.Scanner
을 원시 할 수 있습니다.또, 「」는, 「」의 「데이터 타입의 해석」을 실시합니다.BufferedReader
스트링BufferedReader
하고 있습니다.Scanner
렇지않않 않않않다다BufferedReader
여러 스레드로 작업하는 경우.Scanner
중에 을 숨깁니다.BufferedReader
시시던던던던다다
사용할 것을 권장합니다.BufferedReader
이치노 Scanner
IOException
동시에BufferedReader
시시던던던던다다
Buffered Reader와 스캐너의 차이는 다음과 같습니다.
- BufferedReader는 동기화되어 있지만 스캐너가 동기화되어 있지 않습니다.
- BufferedReader는 스레드 세이프이지만 스캐너는 스레드 세이프가 아닙니다.
- BufferedReader는 버퍼 메모리가 더 크지만 스캐너의 버퍼 메모리는 더 작습니다.
- BufferedReader는 빠르지만 스캐너 실행 속도는 느립니다.
- 콘솔에서 행을 읽기 위한 코드:
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와 스캐너의 차이점은 다음과 같습니다.
- BufferedReader는 데이터를 읽지만 스캐너가 데이터를 해석합니다.
- 문자열은 BufferedReader를 통해서만 읽을 수 있으며 스캐너를 사용하면 다음과 같은 다양한 데이터 유형을 읽을 수 있습니다.
int
. - BufferedReader는 스캐너보다 오래된 것으로, 에 추가되었습니다.
JDK 1.1
스캐너가 에 추가되어 있는 동안JDK 5
어주주다 - BufferedReader의 버퍼 크기는 스캐너의 1KB에 비해 큽니다(8KB).
- BufferedReader는 긴 문자열로 파일을 읽는 데 더 적합하며, Scanner는 명령 프롬프트에서 작은 사용자 입력을 읽는 데 더 적합합니다.
- BufferedReader는 동기화되어 있지만 스캐너는 동기화되어 있지 않으므로 여러 스레드 간에 스캐너를 공유할 수 없습니다.
- BufferedReader는 구문 분석에 시간이 걸리지 않으므로 스캐너보다 빠릅니다.
- 스캐너에 비해 Buffered Reader가 조금 더 빠릅니다.
- BufferedReader의 출처
java.io
패키지(스캐너 원본인 경우)java.util
★★★★★★★★★★★★★★★★★★.
포인트에 따라 선택할 수 있습니다.
읽어주셔서 감사합니다!
주요 차이점:
- 스캐너
- 정규식을 사용하여 원시 유형 및 문자열을 구문 분석할 수 있는 간단한 텍스트 스캐너입니다.
- 스캐너는 기본적으로 공백과 일치하는 구분자 패턴을 사용하여 입력을 토큰으로 나눕니다.그런 다음 다양한 다음 방법을 사용하여 결과 토큰을 다른 유형의 값으로 변환할 수 있습니다.
예:
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();
- 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
파일을 읽을 때 버퍼 메모리를 사용하여 물리적 드라이브 사용량을 줄이기 때문입니다. ㄴㄴㄴ데 하다'를 해도 됩니다.BufferedReader
의 Scanner
.
는 는는더 prefer prefer iScanner
체크된 예외를 발생시키지 않기 때문에 사용방법에 따라 코드가 보다 합리화되기 때문입니다.
-
BufferedReader는 아마도 더 나은 성능을 제공할 것입니다(스캐너는 InputStreamReader를 기반으로 하기 때문에 룩소스).nio
했을 때nio
.BufferedReader
파일nio
에 조금 더 나은 퍼포먼스를 나타냅니다. - 파일에서 데이터를 읽으려면 Apache Commons IO를 사용해 보십시오.
언급URL : https://stackoverflow.com/questions/2231369/scanner-vs-bufferedreader
'programing' 카테고리의 다른 글
Vuejs Ajax 콜 및 데이터 테이블 (0) | 2022.08.21 |
---|---|
bool의 printf 형식 지정자는 무엇입니까? (0) | 2022.08.21 |
Vuex 액션을 적절하게 체인하여 콜 간에 상태를 올바르게 변환하려면 어떻게 해야 합니까? (0) | 2022.08.21 |
Vue 사용에 대한 v-의 알 수 없는 속성 (0) | 2022.08.21 |
옛날에는 >가 <...>보다 빨랐을 때무엇이 기다리니? (0) | 2022.08.21 |