내 PC에서 내 휴대폰에 저장 한 파일을 찾아서 열 때 문제가 있습니다. this answer의 훌륭한 해결책에도 불구하고 제대로 작동하지 않습니다. 내가 여기에 HTC 센세이션 Z710e델파이 XE5 안드로이드 문제 파일 찾기
에서 실행하고있어 내가 실행하는 데 노력하고있어 코드 :
function GetSDCardPath: string;
var MusicPathLength: integer;
MusicPath, SDCardPath: string;
begin
MusicPath:=System.IOUtils.TPath.GetSharedMusicPath;
MusicPathLength:=Length(MusicPath);
SDCardPath:=Copy(MusicPath, 0, MusicPathLength-5);
Result:=SDCardPath;
end;
procedure TForm3.Button1Click(Sender: TObject);
var sr:TSearchRec;
begin
CardPath:=TPath.Combine(GetSDCardPath,'*.*');
if (FindFirst(CardPath,faNormal,sr)=0) then
begin
repeat
Memo1.Lines.Add(sr.Name);
until FindNext(sr)<>0;
FindClose(sr);
end;
end;
나는 아래의 코드와 두 번째 테스트했고, 나는 분명히 같은 파일을 저장할 수 있습니다 파일 이름이 파일 목록에 나타나지만 적어도 내 외장 드라이브 F :로 표시되는 카드는 sdcard에 저장되어 있지 않은 것처럼 보입니다. TPath.GetDocumentsPath는 sdcard를 가리켜 야합니다.
procedure TForm3.Button1Click(Sender: TObject);
var sr:TSearchRec;
begin
CardPath:=TPath.Combine(TPath.GetDocumentsPath,'*.*');
Memo1.Lines.Add(CardPath);
if (FindFirst(CardPath,faAnyFile,sr)=0) then
begin
repeat
Memo1.Lines.Add(sr.Name);
until FindNext(sr)<>0;
FindClose(sr);
end;
end;
procedure TForm3.WriteClick(Sender: TObject);
var
s: string;
F:TextFile;
begin
Memo1.Lines.Clear;
s := TPath.Combine(TPath.GetDocumentsPath,'file2.txt');
AssignFile(F,s);
ReWrite(F);
Writeln(F,'Test');
CloseFile(F);
end;
먼저 쓰기 단추를 클릭하여 파일을 작성한 다음 Button1을 클릭하여 디렉토리에 파일을 나열합니다. CardPath는 /data/data/com.embarcadero.TestApp2/files/ 입니다. 내 컴퓨터에서 내 장치에 표시되는 Android/data/com.embarcadero.TestApp2/files/폴더가 있지만 파일이 없습니다. 내 장치에 파일이 저장되어 있습니까?
PC에서 본 디렉토리 구조와 다른 TPath.GetPath 문자열에서 읽은 디렉토리가 너무 다르기 때문에 내 파일의 위치를 파악할 수 없다는 점을 잊어 버렸습니다. –
PC에 따른 정확한 경로는 무엇입니까? 'GetSDCardPath' 함수를 호출하지만, 당신은 이동식 sd 카드에없는'GetSharedMusicPath'만을 사용합니다. 기기에서 볼 수있는 정확한 경로는 무엇입니까? 너는 그걸 잊어 버렸다. 귀하의 PC에 따라 이동식 SD 카드에 파일이 있습니까? – greenapps
다른 테스트 코드를 추가했습니다. –