크로스 플랫폼 앱은 데이터를 어디에 보관해야 합니까?

StackOverflow https://stackoverflow.com/questions/57019

  •  09-06-2019
  •  | 
  •  

문제

곧 Windows, Mac 및 Linux를 대상으로 하는 애플리케이션을 구축할 예정입니다.설정 등 애플리케이션 데이터를 어디에 보관해야 하는지 궁금합니다.

응용 프로그램의 설치 폴더가 가장 쉬운 선택이지만 새로운 Vista 보안 모델에서는 이것이 문제가 될 수 있다고 생각합니다.게다가 사용자는 다른 설정을 원할 수도 있습니다.

C:\Documents and Settings\username\MyApp이 Vista와 XP 모두에 적합합니까?/home/username/.MyApp이 Linux 및 Mac에 적합합니까?

모범 사례에 대한 아이디어 및/또는 링크를 주시면 감사하겠습니다.

감사해요!

후안

도움이 되었습니까?

해결책

각 플랫폼에는 사용자의 홈 폴더, 문서 폴더 또는 기본 설정 폴더를 찾기 위한 자체 API가 있습니다.

  • 윈도우:SHGetFolderPath() 또는 SHGetKnownFolderPath()
  • 맥 OS X 및 아이폰 OS:NSSearchPathForDirectoriesInDomains()
  • 유닉스:$HOME 환경 변수

특정 경로를 하드코딩하거나 사용자 이름에 접두사와 접미사를 추가하지 마세요.또한 파일 이름을 지정하는 플랫폼에 대한 모든 규칙을 따르십시오.

다른 팁

모범 사례와 관련하여 Jeff는 유용할 수 있는 사용자 공간 오염에 대한 기사를 게시했습니다. 사용자 공간을 오염시키지 마세요

일반적으로 설정 구현을 '설정 공급자'로 추상화하고 각 플랫폼에 대해 서로 다른 공급자를 제공하는 것이 좋습니다.이렇게 하면 대상 플랫폼(예: Linux 또는 Windows 레지스트리의 파일)에 가장 적합한 방식으로 설정 저장소를 구현할 수 있습니다.

단순히 '최저 공통 분모'를 채택하지 마십시오.파일에 명시적으로 저장해야 하는 콘텐츠가 있는 경우 설정 공급자가 해당 파일의 플랫폼별 위치를 노출하도록 하세요.

난 아니다 :)

Windows에서는 USERPROFILE을 사용하고 Mac/Linux에서는 HOME을 사용하고 있습니다.하지만 그럼에도 불구하고 그곳이 올바른 장소인지 알아야 합니다.

감사해요!

Windows에서는 사용자 프로필보다 더 깊은 수준으로 이동해야 합니다.응용 프로그램 데이터 폴더를 사용하십시오.

Windows에서는 APPDATA를 사용하고 Linux에서는 HOME을 사용합니다.

절대로 사용자 데이터를 응용 프로그램 폴더에 저장하지 마십시오.그것은 단지 나쁜 생각입니다.

대부분의 운영 체제에는 $HOME(또는 %HOME%) 환경 변수가 있습니다.그곳이 가장 먼저 보이는 곳일 것입니다.

하지만 여러 운영 체제를 깔끔하게 지원하려면 각 운영 체제에 대해 정확히 어디로 가야 하는지 파악하는 일부 OS별 코드가 있어야 합니다.(Mac OS의 경우 ~/Library, GNOME 기반 시스템의 경우 ~/.config, Windows의 경우 %HOME%/Application Data 등).

어떤 언어를 사용할 계획인가요?예를 들어 Java에는 전용 선호 API.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top