2014-12-18 2 views
0

FTP 다운로드를 처리하고이를 내 응용 프로그램의/files/폴더에 저장하는 새로운 클래스를 만들었습니다.App Files Dir을 클래스에 추가하는 방법은 무엇입니까?

나는 디렉토리 경로를 하드 코드했지만보다 효율적인 방법을 사용하고자합니다.

내 코드는 다음과 같습니다

public class myFTP { 

    public FTPClient connect(String ip, String user, String pass) { 
     SOME CODE 
    } 

    public boolean download (FTPClient client, File file, String dir){ 
      SOME CODE 
      file = new File("/data/data/com.myapp/files/"+NAME OF DOWNLOAD FILE); //Here is my problem 
    } 

내가 context.getFilesDir() 또는이 디렉토리를 반환하는 다른 기능 같은 것으로 "/data/data/com.myapp/files을 변경하려면 어떻게 할 수 있습니다. ?

답변

0

http://itekblog.com/android-context-in-non-activity-class/

이 내 클래스를 수정 발견

myFTP myftp = new myFTP(this); 
+1

아마도 dir에 하드 코딩 된 문자열을 원하지 않을 것입니다. context.getFileDir()을 "/ data/data /"디렉토리로 사용하십시오. 모든 장치에 사용되는 디렉토리가 아닙니다. 그것은 약간에 충돌 할 것이다. – browep

+0

사실 나는 그것을 내 코드에서 가지고있었습니다. 나는 여기에 코드를 간단하게 만들 때 그것을 바 꾸었습니다 ... 고마워요. –

0

당신은 같은 것을 사용해야 코드 :.

String LocalDirectory = Environment.getExternalStorageDirectory().getAbsolutePath(); 

LocalDirectory 외부 저장 장치에 대한 경로가 포함를

1

당신은 이미

File file = new File(context.getFilesDir() + File.separator + nameOfDownloadFile); 

그것의 대부분을 가지고있어이 앱의 "파일"디렉토리에 당신에게 파일 개체에 대한 참조를 제공 할 것입니다.

+0

내가 컨텍스트를 얻을 : 이제

public class myFTP extends ContextWrapper { public myFTP(Context base) { super(base); } public FTPClient connect(String ip, String user, String pass) { SOME CODE } public boolean download (FTPClient client, File file, String dir){ SOME CODE file = new File(context.getFileDir()+NAME OF DOWNLOAD FILE); //Here is my problem } 

컨텍스트를 가지고 서비스, 활동 또는 anthing에서 전화를 변수가 예방되지 않았을 수 있습니다. 하지만 Contexto를하려고하면 context = XX가 작동하지 않습니다. –

+0

Context 인스턴스를 얻는 것은 코드의 위치에 따라 다릅니다. 액티비티에있는 경우 액티비티는 컨텍스트 개체로 사용됩니다. 그렇지 않다면, 당신이 사용하고있는 클래스의 생성자에 그것을 전달해야합니다. – browep

+0

해결되었습니다. 지금 해결책을 게시하겠습니다. –

관련 문제