파일 경로 처리 크로스 플랫폼
-
02-07-2019 - |
문제
Paths Cross 플랫폼을 처리하는 C ++ GNU 독립형 클래스가 있습니까? 내 응용 프로그램은 Windows 및 Linux를 구축합니다. 구성 파일은 별도의 디렉토리의 다른 파일을 나타냅니다. 다른 구성 파일의 경로를 Linux 또는 Windows에서 작동하는 클래스로 읽을 수 있습니다.
어느 클래스는 어느 클래스를 가장 작은 발자국을 제공하여 어느 시스템에서도 사용할 경로를 번역 할 수 있습니까? 감사
해결책
절대 경로를 사용하지 않는 한 전혀 번역 할 필요가 없습니다. Windows는 전방 슬래시를 백 슬래시로 자동 변환하므로 앞쪽 슬래시 경로 분리기가있는 상대 경로를 사용하면 황금빛이됩니다. 가능한 경우 절대 경로를 실제로 피해야합니다.
다른 팁
노력하다 부스트 :: 파일 시스템
파일 시스템 라이브러리 부스트에서 도움이 될 것입니다.
정답은 여러 가지 방법이 있습니다. 정답은 프로그램을 재 설계하여 경로 조작을 피하는 것입니다. 여기에 답을 게시했습니다. https://stackoverflow.com/a/40980510/2345997 관련이 있습니다.
방법 :
- 사용자가 구성 파일에서 읽는 대신 문제의 경로를 지정할 수있는 명령 줄 옵션을 추가하십시오.
- 사용자가 기본 경로를 지정할 수 있도록 명령 줄 옵션을 추가하십시오. 구성 파일의 경로는이 기본 경로 아래에있는 것으로 해석됩니다.
- 구성 파일을 3으로 나눕니다. 하나의 파일에는 크로스 플랫폼 구성이 있고 다른 파일에는 Windows 만 구성이 있고 최종 파일에는 Linux 만 구성이 있습니다. 그런 다음 사용자는 Windows와 Linux의 올바른 경로를 지정할 수 있습니다. Windows에서 프로그램은 크로스 플랫폼 구성 파일과 Windows 전용 구성 파일을 읽습니다. Linux에서는 크로스 플랫폼 파일과 Linux 전용 구성 파일을 읽습니다.
- 구성 파일 구문 분석에 전처리를 추가하십시오. 이렇게하면 사용자가 프로그램이 실행중인 OS에 따라 파일의 일부 줄을 무시할 수있는 하나의 구성 파일을 가질 수 있습니다. 따라서 사용자는 파일 경로를 두 번 지정할 수 있습니다. Linux의 경우, Windows의 경우에 한 번.
- 파일이 항상 실행 파일과 동일한 디렉토리에 있도록 설계를 변경하십시오. 그러면 사용자는 파일 경로가 아닌 구성 파일에 파일 이름 만 지정합니다.
- "/"로 ""로 전환하는 간단한 기능을 사용하십시오. 그런 다음 사용자에게 경로를 Linux 경로로 지정해야한다는 것을 사용자에게 문서화하면이 변환이 Windows에 적용됩니다.
- 이를 위해 자신만의 경로 미니 언어를 만들어 사용자에게 문서화하십시오. 예 : "/" - 디렉토리 분리기를 지정합니다. {root} - 파일 시스템의 루트로 확장됩니다. {cwd} - 현재 디렉토리로 확장됩니다. 사용자는 다음과 같은 파일 경로를 지정할 수 있습니다.
- 일부 경로는 두 플랫폼 모두에서 작동합니다. EG : ../my files/bill.txt와 같은 상대 경로. 이 경로 만으로만 작동하도록 응용 프로그램을 제한하십시오. 이 제한 사항과 응용 프로그램이 사용자에게 경로를 처리하는 방법을 문서화하십시오.
제휴하지 않습니다 StackOverflow