2013-05-31 4 views
1

원격 서버 또는 로컬 디스크에서 파일을 검색하는 코드가 있습니다.FileInputStream과 URLConnection을 사용하여 파일 읽기

나는 URLConnection 두 경우 모두를 처리 할 수 ​​있음을 이해하고, 그래서 디스크에서 읽을 수있는 로컬 파일을 읽기보다는 URLConnection에 전원을 전달하는 FileInputStream을 사용하는 경우 어떤 성능 이점이 있다면 궁금 해서요?

답변

2

아니요, URLConnection 개를 초과하여 사용하면 성능상의 이점이 없습니다 (몇 가지 추가 메소드 호출의 밀리 초를 계산하지 않는 한).

file:// URL을 통해 파일을 읽는 것은 결국 당신에게 가져 FileURLConnection (이 공식 자바 라이브러리 스펙, 단지 일 기반의 JRE의 일부가 아닌 참고). 코드를 보면 디스크에있는 파일로 작업 할 수있는 코드가 FileInputStream임을 알 수 있습니다. 따라서 스택에서 몇 개의 레이어를 더 아래로 걷는 것 외에도 코드는 완전히 똑같이 끝납니다.

FileInputStream을 직접 사용하려는 이유는 코드의 명확성 때문입니다. 파일 경로를 URL로 바꾸는 것은 약간 못 생기며 파일을 가지고 만 작업하는 경우 혼란을 겪을 수 있습니다. 필요이 URL을 사용하여 시간의 일부를 작업 할 수 귀하의 경우에는

는, 당신이 파일의 URL 및 URL과 작업을 사용할 수있는 매우 편리합니다. 나는 당신이 거의 모든 흥미로운 논리를 추상화하여 URL을 작업했으며 파일 또는 비 파일 URL을 다른 곳에서 구성하는 추한 사업을 할 수 있다고 상상합니다.

+0

후드 아래에서 작동하는 방법에 대한 자세한 기술 답변을 보내 주셔서 감사합니다! 예, 모듈은 현재 URL을 허용하도록 설정되어 있으므로 파일이있는 위치를 알 필요가 없습니다. – user1941747

0

FileInputStream은 파일 시스템의 파일에서 입력 바이트를 가져옵니다. FileInputStream는, 이미지 데이터 등의 생의 바이트의 스트림을 읽어 들이기 위해서 (때문에) 사용됩니다.

FileReader는 문자 스트림을 읽는 데 사용됩니다. 접속 대상물이 URL에 대해서 openConnection 메소드를 호출함으로써 생성

  1. : URL로 접속을 생성 일반적

    는 다단계 프로세스이다.
  2. 설정 매개 변수와 일반 요청 속성이 조작됩니다.
  3. connect 메소드를 사용하여 원격 객체에 대한 실제 연결이 이루어진다.
  4. 원격 개체를 사용할 수있게됩니다. 헤더 필드와 리모트 오브젝트의 내용에 액세스 할 수 있습니다.

나는 가장 효율적인 상태를 유지하기 위해 가능한 가장 간단한 코드 (객체)를 사용하는 것이 좋습니다. 미니멀리즘을 생각해라!

P. 파일을 이동하거나 내용을 읽는 지 확실하지 않습니다.

+0

미니멀리스트 아이디어에 동의합니다. 문제는 스택 위로 자원을 선택하여 스택 아래로 리소스 유형에 대한 일부 메타 정보를 전달하는 것이 아니라 URL로 변경하고 스택에서 코드로 보내는 것이 더 간단하다는 것입니다. – user1941747