블로그 이미지
Every unexpected event is a path to learning for you.

카테고리

분류 전체보기 (2324)
Unity3D (568)
Programming (472)
Unreal (4)
Gamebryo (56)
Tip & Tech (185)
협업 (34)
3DS Max (3)
Game (12)
Utility (116)
Etc (92)
Link (31)
Portfolio (19)
Subject (90)
iOS,OSX (38)
Android (13)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (1)
Memories (19)
Interest (37)
Thinking (36)
한글 (26)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (19)
Exercise (3)
나만의 맛집 (2)
냥이 (9)
육아 (9)
Total1,344,953
Today57
Yesterday321
Statistics Graph

달력

« » 2019.12
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

공지사항

태그목록

작업하던 도중 모바일에선 경로가 파일경로가 바뀌고 읽어오지못하는 문제가 발생하였다.

pc에선 잘되지만 모바일에서만 이상이있었음

찾다 찾다 유니티 포럼에서 좋은거 긁어왔습니다. ㅋㅋ 아이폰도 됩니다~

 

 

1 public void writeStringToFile( string str, string filename ) 2 { 3 #if !WEB_BUILD 4 string path = pathForDocumentsFile( filename ); 5 FileStream file = new FileStream (path, FileMode.Create, FileAccess.Write); 6 7 StreamWriter sw = new StreamWriter( file ); 8 sw.WriteLine( str ); 9 10 sw.Close(); 11 file.Close(); 12 #endif 13 }


1 public string readStringFromFile( string filename)//, int lineIndex ) 2 { 3 #if !WEB_BUILD 4 string path = pathForDocumentsFile( filename ); 5 6 if (File.Exists(path)) 7 { 8 FileStream file = new FileStream (path, FileMode.Open, FileAccess.Read); 9 StreamReader sr = new StreamReader( file ); 10 11 string str = null; 12 str = sr.ReadLine (); 13 14 sr.Close(); 15 file.Close(); 16 17 return str; 18 } 19 else 20 { 21 return null; 22 } 23 #else 24 return null; 25 #endif 26 }

// 파일쓰고 읽는넘보다 이놈이 핵심이죠
1 public string pathForDocumentsFile( string filename ) 2 { 3 if (Application.platform == RuntimePlatform.IPhonePlayer) 4 { 5 string path = Application.dataPath.Substring( 0, Application.dataPath.Length - 5 ); 6 path = path.Substring( 0, path.LastIndexOf( '/' ) ); 7 return Path.Combine( Path.Combine( path, "Documents" ), filename ); 8 } 9 else if(Application.platform == RuntimePlatform.Android) 10 { 11 string path = Application.persistentDataPath; 12 path = path.Substring(0, path.LastIndexOf( '/' ) ); 13 return Path.Combine (path, filename); 14 } 15 else 16 { 17 string path = Application.dataPath; 18 path = path.Substring(0, path.LastIndexOf( '/' ) ); 19 return Path.Combine (path, filename); 20 } 21 }



[출처] Unity3D 모바일(안드로이드) 파일생성 및 읽고 쓰기|작성자 호랑낚시

Posted by blueasa

댓글을 달아 주세요

  1. 2013.04.15 15:12 darkkiss  댓글주소  수정/삭제  댓글쓰기

    좋은 정보 감사합니다. 담아갑니다^^

  2. 2014.06.01 15:01 강동현  댓글주소  수정/삭제  댓글쓰기

    제가 유니티로 sdcard0/a.txt 라는 파일의 x번째 줄을 읽으려 하는데요 그건 어떻게 하는건가요?
    (앱으로만 해봤고 유니티로는 못해요ㅠ)

  3. 2014.06.28 22:39 vndkdnwk  댓글주소  수정/삭제  댓글쓰기

    저렇게 하면 경로가 대충 어떻게 잡히나요?

    • 2014.06.30 00:22 신고 blueasa  댓글주소  수정/삭제

      아이폰에서 dataPath는 : /var/mobile/Applications/프로그램ID/앱이름.app/Data
      안드로이드에서 Application.persistentDataPath :
      External : Application.persistentDataPath : /mnt/sdcard/Android/data/번들이름/files
      Internal : Application.persistentDataPath : /data/data/번들이름/files/

      이렇게 됩니다.
      자세한 데이터패스는 아래 링크를 참조해 보세요.

      링크 : http://unitystudy.net/bbs/board.php?bo_table=dustin&wr_id=357

  4. 2016.03.20 12:19 wcgwcg  댓글주소  수정/삭제  댓글쓰기

    좋은 정보 감사합니다~ 정말 많은 도움 되었어요~

  5. 2017.07.01 20:59 xmldown  댓글주소  수정/삭제  댓글쓰기

    안드로이드 디바이스 에서 StreamAssets 에 있는 xml을 파일을 읽은 다음
    디바이스 상에서 수정한 다음 저장에서 쓰고 싶습니다.
    pathForDocumentsFile( string filename )
    에다가 그냥 xml 파일 이름(fileName + ".xml" ) 넣으면 되나요?
    꼭 저게 StreamAssets 밑에 있을 이유가 없는 데요, 그냥 아무 folder에 넣은 뒤 빌드하면 되나요?

    • 2017.07.03 17:59 신고 blueasa  댓글주소  수정/삭제

      안녕하세요.
      우선 데이터패스에 대해 알고 계셔야 될 것 같아서 아래 링크를 한 번 보시면 좋을 것 같습니다.
      (데이터 패스 : http://blueasa.tistory.com/1703 )

      파일을 빌트인 하고 Read를 하시려면 Application.streamingAssetsPath(읽기만 됨)를 추천합니다만, Read/Write를 하려면 Application.persistentDataPath를 쓰는 게 낫지 싶네요.