2016-07-13 2 views
-2

정말 혼란 스럽습니다. Java에서 파일을 읽는 방법에 대한 많은 구현을 보았습니다. 읽은 것이 많을수록 나에게 의미가 덜합니다.Java - 초기화 BufferedReader 객체 경로 객체

내가 알아챈 것처럼 파일을 읽는 가장 좋은 방법은 BufferedReaderScanner 이상 사용하는 것입니다.

Scanner s = new Scanner(new BufferedReader(...); 

대신 단지 : 같은 하지만, 내가 본 예

Scanner s = new Scanner(new File("foo.txt")); 

가 어떤 이유 BufferedReaderScanner를 초기화하는 것? 이렇게하면 어떤 이점이 있습니까?

지금 내가 혼란스러워하는 부분은 File 대신 Path 개체를 사용하는 것이 좋습니다. 그러나 우아한 초기화 방법을 찾지 못했습니다. BufferedReaderPath 개체로 BufferedReaderFileReaderPath을 사용할 수 없습니다.

물론 단지 같은 것을 할 수있는 방법이있다 :

Path path = Paths.get("foo.txt"); 
BufferedReader br = new BufferedReader(new FileReader(path.toFile())); 

을하지만 그 혼란의 많은 것 같습니다. BufferedReader에 대한

내 질문은 :

  • 이 난 BufferedReader를 사용해야합니까?
  • FileReader의 목적은 무엇입니까? 왜 그냥 BufferedReaderString 또는 Path으로 초기화 할 수 없습니까?
+0

예 BufferedReader를 사용해야합니다. 다른 질문에 대한 대답은 - '할 수 있기 때문에 단지 첫 번째 것에도 적용해야 함을 의미하지는 않습니다.'입니다. – Shark

+0

@Shark 이해가 안되네요. - 그래야한다고 말했지만, 그러지 말아야한다고 제안했는데, 어느 것이지? –

+1

당신은해야합니다."왜 문자열이나 경로로 BufferedReader를 초기화 할 수 없는가?"- 불필요하고 복잡한 부분을 잘라내는 것처럼 쉬운 일로 보이는 프로그래밍의 해결 방법과 바로 가기가 많이 있습니다. 그러나 당신이 할 수 있다고해서 반드시해야한다는 것은 아닙니다. 마지막 질문에 관해서는 - 문자열로 초기화 할 수없는 이유는 클래스 작성자에게 좋은 질문 일 것입니다. 결국, 좀 더 읽고, 당신이 그 특별한 경우에 있어야하는지 아닌지에 대해 정보에 입각 한 결정을 내리십시오. – Shark

답변

3

BufferedReader를 사용해야합니까?

물론 이죠?

FileReader의 목적은 무엇입니까?

문자 모드에서 파일을 읽으려면.

왜 문자열이나 경로로 BufferedReader를 초기화 할 수 없습니까?

이 생성자가 없기 때문에 이미 존재하는 FileReader이되므로 중복 될 수 있습니다.

+0

감사합니다. 이제'FileReader'가 전혀 사용되어서는 안되며 대신'InputStreamReader'가 사용되어야한다고 읽었습니다. 물건을 만드는 명확한 방법이 있었으면 좋겠다. 나는이 질문을 물어 보았으므로이 작업을 처리하는 올바른 방법을 정말로 이해할 수 있었다. –

+1

'적절한 방법'이 하나도 없습니다. 요구 사항에 따라 여러 가지 방법이 있습니다. 예를 들어, 디폴트가 아닌 charset으로 자신 만의'InputStreamReader'를 생성하고 싶을 수도 있습니다; 디폴트가 아닌 버퍼 크기를 갖는'BufferedReader'; 또는 파일에서 입력 내용이 전혀 나오지 않을 수도 있습니다. – EJP

+0

@AlexWeitz 당신이 알아 낸 것을 기쁘게 생각합니다. 'FileInputStream'을 제안하고 이것이 요구 사항에 맞는지 생각해 볼 좋은 시간입니다. :) – Shark