새로운 io.FS를 fs.WalkDir에 사용하고 파일 시스템 유형 전체에 걸쳐 파일 나열

WBOY
풀어 주다: 2024-02-10 10:09:08
앞으로
1124명이 탐색했습니다.

使用新的 io.FS 到 fs.WalkDir 并列出跨文件系统类型的文件

PHP 편집자는 특히 fs.WalkDir을 사용하고 파일 시스템 유형에 걸쳐 파일을 나열할 때 새로운 io.FS를 사용하여 파일 시스템을 작동할 것을 권장합니다. 이 새로운 기능은 파일 작업을 보다 유연하게 처리할 수 있으므로 사용자는 필요한 파일 정보를 보다 쉽게 ​​얻을 수 있습니다. 개발 또는 유지 관리 프로세스에서 이 기능은 효율성을 크게 향상시키고 지루한 작업을 줄일 수 있습니다. 이 기능을 사용하는 방법에 대해 더 알고 싶으시면 계속 읽으시면 자세한 단계와 주의 사항을 소개하겠습니다.

질문 내용

저는 새로운 io.FS 추상화를 사용하여 파일 시스템을 탐색하고 내부 파일 확장자와 일치하는 각 파일의 처음 128바이트를 읽습니다.

이러한 파일은 로컬 파일 시스템 및 아카이브 파일 등에 있습니다(ZIP 및 Tar I 썽크).

저는 fs.WalkDir을 사용하여 fs.FS(내 테스트에서는 os.DIR 및 fstest.MapFS)를 전달하고 있습니다. 걸을 때 "파일" 세트를 반환합니다(실제로는 우리의 독점 형식인 *.pzix 및 *.pzi 파일입니다). 작업 중인 파일에 대한 일부 정보를 얻기 위해 FS 인터페이스를 사용하는 적절한 방법을 찾을 수 없습니다.

내가 원하는 것:

  • 파일 이름 가져오기
  • 파일 크기 가져오기
  • openfile 메소드 가져오기

Go의 Java/C# 인터페이스가 약간 혼란스럽습니다. 추상화 작업을 수행하고 싶지만 파일 자체의 다른 구현을 가져오는 방법을 모르겠습니다(예: 파일 인터페이스에 Stat() 및 읽기가 있음).

내가 찾은 가장 쉬운 방법은 경로와 파일 이름을 배열에 저장한 다음 배열을 반복할 때 그것이 os.Dir인지 fstest.MapFS인지 확인하는 것입니다. 하지만 이는 다소 직관에 어긋나는 것 같습니다. 으아악

이것은 나에게 다음을 제공합니다:

으아악

이러한 작업을 수행하지 않고 추상화를 처리할 수 있는 더 현명한 방법이 있습니까? 왜냐하면 배열을 반환한 후 파일을 "열고" 처음 128바이트(서명)를 읽고 파일의 나머지 부분을 해시하여 "유효한지" 확인해야 하기 때문입니다.

EDIT: 명확히 하기 위해 collectFiles 방법은 다른 방법으로 처리할 기본 파일 히트 목록을 생성하는 것입니다. 아카이브의 파일을 반복하여 배열에 추가할 수 있도록 로컬 시스템 파일, zip 파일 및 tar 파일을 메서드에 전달하고 싶습니다.

다음 호출자가 아래 내용을 알지 못한 채 f.open()을 수행할 수 있도록 문자열 대신 배열에 저장할 수 있는 파일 인터페이스가 있었으면 좋겠습니다.

Workaround

p은 파일 시스템의 이름입니다.

전화로 사이즈 문의하세요fs.Stat(f, p)

f.Open(p)

을 사용하여 파일 열기

예:

으아악

간결하게 하기 위해 이 예에서는 오류를 무시합니다. 실제 코드에서는 이 작업을 수행하지 마세요.

https://www.php.cn/link/b599e8250e4481aaa405a715419c8179

위 내용은 새로운 io.FS를 fs.WalkDir에 사용하고 파일 시스템 유형 전체에 걸쳐 파일 나열의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!