안드로이드 개발 질문/답변
(글 수 45,052)
< GetList.java >
package haneol_test.UDT;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import android.annotation.SuppressLint;
import android.app.ListActivity;
import android.widget.ArrayAdapter;
@SuppressLint({ "ParserError", "ParserError", "ParserError" })
public class GetList extends ListActivity{
public static final void SimpleGetlistFromFTP(String targetUrl, String id,
String pwd, int port) //String realSaveLocation, File file,
throws Exception {
FTPClient client = null;
BufferedInputStream bis = null;
try {
client = new FTPClient();
client.setControlEncoding("euc-kr");
client.connect(targetUrl, port);
int resultCode = client.getReplyCode();
if (FTPReply.isPositiveCompletion(resultCode) == false) {
throw new Exception("FTP 서버에 연결할 수 없습니다.1");
} else {
client.setSoTimeout(5000);
boolean isLogin = client.login(id, pwd);
if (isLogin == false) {
throw new Exception("FTP 서버에 로그인 할 수 없습니다.");
}
client.setFileType(FTP.BINARY_FILE_TYPE);
FTPFile[] list = client.listFiles();
String[] file_lists=new String[list.length] ;
for(int i=0 ;
i<list.length ; i++) { try{
System.out.println(list[i].toString());
file_lists[i]=list[i].toString();
}
catch (Exception e)
{ } }
client.logout();
}
} catch (Exception e) {
e.printStackTrace();
throw e;
} finally {
if (bis != null) {
try {
bis.close();
} catch (Exception e) {
}
}
if (client != null && client.isConnected()) {
try {
client.disconnect();
} catch (Exception e) {
}
}
}
}
}
제가 ftp에서 리스트를 얻어오기 위해서 오픈소스를 가져와서 조금 수정을 봤습니다.
위 코드에서는 에러가 없습니다.
그런데
mainActivity.java 에서 file_lists 를 가져오려면 어떻게 해야하나요?
String[] file_list= haneol_test.UDT.GetList.SimpleGetlistFromFTP(targetUrl, id, pwd, port).file_lists; << --file_lists cannot be resolved or is not a field
이런식으로 읽어오려고 하면 에러가 납니다. 제가 뭔가 실수를 하는것 같은데,.. 도움이 필요합니다 ㅜㅜ
2012.07.04 12:53:06
(추천:
1 / 0)
mainActivity의 fle_lists가 static으로 되어있으면 mainActivity.file_lists 로 가져오심 되겠지만,
그게 아니라면 가져올 수 있는 방법은 없죠.
여러가지 방법이 있겠지 변수를 스태틱으로 만들던지, 싱글톤을 써서 변수를 한곳에 모은다던지..
뭐 방법은 많죠.
2012.07.04 14:59:43
(추천:
1 / 0)
String[] file_list 변수를 멤버 변수로 뺍니다.
그리고 get함수를 만들어서...
public class GetList extends ListActivity{
private String[] file_list ;
public String[] getStrArrFile(){
return file_list;
}
}
위 클래스는 저렇게 해놓으시고
MainActivity에서는 GetList 클래스의 참조변수를 선언해 놓으신 뒤
GetList oGetList = new GetList();
String[] file = oGetList.getStrArrFile();
요렇게 하면 되지 않을까 하네요..
물론 이 로직은 메인액티비티에서 GetList의 객체를 인스턴스화했을 때의 얘깁니다만..
위 설명만 가지고는 이게 님이 원하는 답일진 모르곘네요




메서드는 클래스가 아니기 때문에 안에 있는 변수에 접근할 수 없습니다.
해당 변수를 멤버변수로 사용하시면 됩니다.