Java: 경로와 파일
Java 7로 작성된 새로운 어플리케이션의 경우 오브젝트를 더 이상 사용할 이유가 없거나 권장되지 않는 것으로 간주할 수 있습니까?
나는 A가 할 수 있는 모든 것을 할 수 있다고 믿는다.
요약하자면:
java.io.File
권장되지 않거나 지원되지 않을 가능성이 높습니다.그렇긴 한데java.nio.file.Path
더 현대적인 것의 일부입니다.java.nio.file
lib 및 모든 것을 수행합니다.java.io.File
할 수 있지만, 일반적으로 더 나은 방법으로, 그 이상입니다.
새 프로젝트의 경우,Path
.
그리고 만약 네가 필요할 때File
레거시 오브젝트, Path#toFile()을 호출하기만 하면 됩니다.
파일에서 경로로의 이행
Janice J의 기사.Heiss와 Sharon Zakhour, 2009년 5월 JDK 7의 NIO.2 파일 시스템에 대해 논의
더 이상 사용되지 않는다고 생각해도 될까요?
아니요, 이 명령어가 에 표시되지 않는 한 권장되지 않는 것으로 간주할 수 없습니다.File
자바독
상세한 것에 대하여는, 다음의 문서를 참조해 주세요.http://www.oracle.com/technetwork/articles/javase/nio-139333.html
기본적으로 파일입니다.향후는 패스가 방법이지만, 널리 알려진 바와 같이 자바 사람들은 백호환성을 유지하는 경향이 있기 때문에, 그것이 그들이 그것을 떠난 이유라고 생각합니다.
나는 매우 좋은 대답을 완성할 것이다.@mmcrae
.
java.io 를 사용할 이유가 있습니까?파일 오브젝트는 더 이상 사용되지 않거나 권장되지 않는 것으로 간주할 수 있습니까?
JDK 클래스는 거의 사용되지 않습니다.
첫 번째 JDK 이후 사용되지 않는 모든 클래스는 JDK 8 API 권장 목록에서 확인할 수 있습니다.
Oracle 설명서 및 Java 커뮤니티에서 사용하지 않는 일부 클래스만 포함되어 있습니다.
java.util.Date
,java.util.Vector
,java.util.Hashtable
...결함이 많은 클래스는 폐지되지 않습니다.
하지만 왜 그랬을까?
왜냐하면 개념적으로 보면deprecated
아직 남아 있지만 확실히 제거될 것이기 때문에 사용을 자제해야 합니다.
수천 개의 프로그램이 이러한 형편없이 설계된 수업에 의존하고 있습니다.
이러한 클래스의 경우 Java API 개발자는 이러한 신호를 제공하지 않습니다.
회답:@EJP
정말 옳습니다.
자바독에 표시가 되어 있지 않으면 안 돼요
그래서 저는 당신의 질문이 그 용어로 더 말이 된다고 생각합니다.
"선택권이 있는 만큼, 이 시스템을 사용하여java.io.File
또는java.nio.file.Path
새로운 개발을 위해, 그리고 그 해답변은java.nio.file.Path
를 쉽게 이용할 수 있습니까?java.io.File
를 사용하여 레거시 프로젝트의 경우java.io.File
?"
java.nio. 파일을 믿어요.경로는 java.io에서 모든 작업을 수행할 수 있습니다.파일 기능 및 기타 기능.
정답이 있으시군요.
레거시 IO에 대한 이 오라클 튜토리얼을 통해 귀하의 생각을 확인할 수 있습니다.
Java SE 7 출시 이전 버전에서는
java.io.File
class는 파일 I/O에 사용되는 메커니즘이었지만 몇 가지 단점이 있었습니다.많은 메서드가 실패했을 때 예외를 발생시키지 않았기 때문에 유용한 오류 메시지를 얻을 수 없었습니다.예를 들어 파일 삭제에 실패하면 프로그램은 "삭제 실패"를 수신하지만 파일이 존재하지 않거나 사용자에게 권한이 없거나 다른 문제가 있는지 알 수 없습니다.
이름 변경 방법은 플랫폼 간에 일관되게 작동하지 않았습니다.심볼릭 링크에 대한 실질적인 지원은 없었다.
파일 권한, 파일 소유자 및 기타 보안 특성 등 메타데이터에 대한 추가 지원이 필요했습니다.
파일 메타데이터에 액세스하는 것이 비효율적이었습니다.
파일 메서드의 대부분은 확장되지 않았습니다.서버상에서 대규모 디렉토리 리스트를 요구하면, 행업 하는 일이 있습니다.디렉토리가 크면 메모리 리소스 문제가 발생하여 서비스 거부가 발생할 수도 있습니다.
순환 심볼 링크가 있는 경우 파일 트리를 재귀적으로 걷고 적절하게 응답할 수 있는 신뢰할 수 있는 코드를 작성할 수 없었습니다.
많은 단점이 있지만java.io.File
새로운 개발을 위해 이 수업을 사용할 이유가 전혀 없습니다.
또, 레거시 코드의java.io.File
, Oracle은 사용 힌트를 제공합니다.Path
.
java.io 를 사용하는 레거시 코드가 있을 수 있습니다.java.nio.파일을 이용하고 싶다.코드에 대한 영향을 최소화하면서 경로 기능을 제공합니다.
java.io 입니다.파일 클래스는 이전 스타일의 파일 인스턴스를 java.nio. 파일로 변환하는 toPath 메서드를 제공합니다.다음과 같은 경로 인스턴스:
Path input = file.toPath();
그런 다음 경로 클래스에서 사용할 수 있는 풍부한 피쳐 세트를 활용할 수 있습니다.
예를 들어, 파일을 삭제한 코드가 있다고 가정합니다.
file.delete();
다음과 같이 Files.delete 메서드를 사용하도록 이 코드를 수정할 수 있습니다.
Path fp = file.toPath();
Files.delete(fp);
네, 하지만 Java7의 표준 API를 포함한 많은 기존 API들은 여전히File
유형.
Java.io 를 참조해 주세요.파일은 권장되지 않습니다.yes java.nio.file.Java.io을 사용하는 프로그램과 교과서가 아직 많이 있는 한 경로가 더 좋습니다.레거시 이유만으로 파일을 사용하지 않는 것으로 간주해서는 안 됩니다.그것은 너무 중요하기 때문입니다.그렇게 하는 것은 단지 헛수고일 뿐이다.예를 들어 Android 프레임워크는 기본적인 파일 처리 기능 중 일부를 위해 파일을 사용합니다.다른 많은 기능들도 사용합니다.
java.nio 패키지의 클래스는 파일인스턴스가 아닌 패스인스턴스와 함께 동작하는 것으로 알려져 있습니다.가능하면 java.nio를 사용하는 경우 Path 클래스를 사용하는 것이 좋습니다.
파일 클래스를 사용해야 하는 경우가 있습니다.이는 메서드 또는 생성자가 인스턴스를 매개 변수로 파일화하려고 하기 때문입니다. 그러나 선택할 수 있는 경우 파일 위의 경로를 사용해야 합니다.
Java 7로 작성된 새로운 어플리케이션의 경우 java.io을 사용해야 하는 이유가 있습니까?파일 오브젝트는 더 이상 사용되지 않거나 권장되지 않는 것으로 간주할 수 있습니까?
이것은 약간 "나폴레온이 러시아를 침공해야 하는가, 아니면 이 브뤼셀 새싹들이 정말 맛있는가?"라는 말과 비슷합니다.
질문의 두 번째 부분에 대해서는 확실히 권장되지 않는 것으로 간주할 수 있다.2018년 1월 현재, 그것은 폐지되지 않았다.하지만 그렇게 생각하면 당신을 막을 수 있는 건 아무것도 없어요그것이 당신에게 현생에서 어떤 이익을 가져다 줄지 다음 생에서 어떤 이익을 가져다 줄지는 말할 수 없다.
언급URL : https://stackoverflow.com/questions/6903335/java-path-vs-file
'programing' 카테고리의 다른 글
정확히 어떻게 이중 문자열 트릭이 작동할까요? (0) | 2022.06.27 |
---|---|
문자를 Java의 ASCII 숫자 값으로 변환 (0) | 2022.06.27 |
Firestore가 'onSnapshot() requires between 인수'를 슬로우합니다. (0) | 2022.06.27 |
Vuex에서 다른 액션 내에서 액션을 호출하는 것은 잘못된 관행입니까? (0) | 2022.06.27 |
디스패치 수신이 값으로 정의되지 않았습니다. (0) | 2022.06.27 |