0

xamrin.forms을 사용하고 있으며 파일에 액세스하려고하고 있습니다.Xamarin.forms를 수정하는 방법 System.IO.FileNotFoundException : 파일을 찾을 수 없습니다.

내가 텍스트 파일로 lastusername.txt하고 실제로 나는 다음과 같은 파일을 읽으려고하고, "내용"으로의 빌드 작업을 설정

:

var filename = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "lastusername.txt"); 
    if (filename != null) 
      return System.IO.File.ReadAllText(filename);//error occurred here 
    else 
      return ""; 

나는 다음과 같은 오류를 얻을 :

안드로이드 자산 폴더 내의 파일 및 "AndroidAsset"의 빌드 타입을 할당

System.IO.FileNotFoundException: Could not find file

+1

건물에 포함 할 때 수행 할 작업을 다시 확인하고 싶을 수 있습니다. 나는 그들이 여기에 액세스하려는 폴더에 넣을 것이라고 생각하지 않습니다 –

+0

맞아요.이 Environment.SpecialFolder.Personal을 변경해야한다고 생각합니다. 내 프로젝트에서 파일을 참조하는 파일을 검색하고 있습니까? ! –

답변

1

장소.

앱의 자산은 읽기 전용으로되어 있기 때문에 존재하지 않는 경우, 당신은 다른 곳 (복사) 절약 AssetManager 통해 그것을 읽을 수 있습니다 (예 : 응용 프로그램이 처음 실행) :

var fileName = "MyAssetBasedFile.txt"; 
if (!File.Exists(Path.Combine(CacheDir.Path, fileName))) 
{ 
    AssetManager assets = this.Assets; 
    using (StreamReader sr = new StreamReader(assets.Open(fileName))) 
    using (StreamWriter sw = new StreamWriter(Path.Combine(CacheDir.Path, fileName), append: false)) 
     sw.Write(sr.ReadToEnd()); 
} 
string content; 
using (StreamReader sr = new StreamReader(Path.Combine(CacheDir.Path, fileName))) 
{ 
    content = sr.ReadToEnd(); 
} 
Log.Debug("SO", content); 

다음 번에 앱을 실행하면 캐시 디렉토리에서 해당 앱을 선택하게됩니다.

+0

실제로 파일을 읽고 쓸 수 있어야합니까?! –

+1

@MohamadMahmoud 앱 번들은 읽기 전용입니다. 캐시 디렉토리 (존재하는 곳)에 존재하는지, 존재하지 않는지, 앱의 자산 (Assets)에서 읽은 다음 캐시 디렉토리에 기록해야합니다. 다음 앱을 실행하면 업데이트 된 버전을 찾을 수 있으므로 애셋에서 초기 버전을 복사하지 않습니다. – SushiHangover

+0

좋은 생각, 당신은 당신의 대답을 업데이 트하고 좀 도와 줄 수있는 코드 라인 .. 감사합니다 –

관련 문제