마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

내장 메모리에 저장된 파일을 얻어내고 싶은데요..

0 추천
protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
 
      Button button = (Button) findViewById(R.id.button1);
      button.setOnClickListener(new TouchListener());
 
      File images = new File(Environment.getDataDirectory().getAbsolutePath());
      File[ ] imagelist = images.listFiles();
 
      try{
            for (int i = 0; i < imagelist.length; i++) {
                  System.out.println(imagelist[i].getAbsolutePath());
            }
      } catch (Exception e){
            System.out.println(e.getStackTrace());
      }
}
 
위 소스에서 try-catch 구문에 걸리는 결과는
                     [Ljava.lang.StackTraceElement;@411eca78
 
도저히 무슨 영문인지 모르겠습니다..
StackTraceElement 클래스 배열을 뜻한다는건 알겠는데 뭐 어쩌라는건지 ㅠㅠ
 
아무래도 imagelist.length 여기서부터 오류가 뜨는 것 같은데 이유를 모르겠습니다.
 
제가 하려는 건 내부 메모리에 접근해서 이미지 입출력하고 싶은데 벌써부터 막히니 힘드네요 -ㅠ-
 
아시는 분 부탁드리겠습니다 !!!
익명사용자 님이 2015년 2월 6일 질문

2개의 답변

0 추천
답은 아니고..

디버깅하는데 1~2분도 안걸리는 문제인데,

기초부터 배우고 오시는게 낫지 않겠습니까?
익명사용자 님이 2015년 2월 6일 답변
댓글 감사합니다
logcat, 중단점 말고 다른 디버깅 방법 말씀하시는건가요 ?
중단점...말하는 것이긴한데,
그건 디버깅이라는 총체적인 행위 중에 코드를 중단 시키는 하나의 수단 일 뿐이고요.
디버깅이라는 총체적인 문제 해결 행위 전체에 대해서 좀 이해를 하는게 나을것 같습니다. 책에..다 나와있지 않나..싶은데요. 한권으로 안되면 두권 세권 알때까지 봐야하지 않을까 싶군요.

왜냐면 이런 식의...기술적으로...
예를들면 밥숟가락 드는 정도에 불과한/숨쉬는 정도에 불과한 티끌 정도에 불과한, 아무런 장애물로 인식되지 않고 훅 하고 1분 내에 수정하고 넘어가야할 문제를 질문으로 떡하니 올려봐야...어차피 앞으로의 님의 전망은 밝지 않은정도가 아니라 아예 없다고 보는게 맞겠죠.
차분히 좀 책보고 디버깅 요령을 익힐때까지 직접 디버깅하는게 낫지 않겠습니까? 아니면...섭섭하게 들리겠지만....얼른 접으세요.
지식 산업의 총아인 소프트웨어 엔지니어링이 그렇게 호락하지가 않습니다. 목수나 이런 것처럼 대충 흉내내는 부분만 배워서 될 문제가 아닙니다. 컴퓨터 공학과 4년 하고 졸업해도 아무것도 못하는 업종입니다. 물론 컴공과 졸업한 친구들은 이런 디버깅은 이미 다 할줄 알겠죠. 그런데도 취업도 못하고 그러고 삽니다.
곰곰히 생각을 좀 다시 해보시는게 좋을 것 같습니다. 군대처럼 시간간다고 대접받는 곳도 아니고요. 이쪽 바닥 잘나가는 테크 트리 타고 중심중의 중심에서 10~20년 있던사람도 대박 내기 어렵습니다.
충고 감사합니다.
제가 아직 학생이고, 저레벨 수준의 코딩만 하다보니, 소스가 짧다 보니, 딱히 디버깅에 대해 고민한 적이 없었습니다. 선배님이 그리 말씀해주시니 디버깅을 단순히 무시할 순 없군요..
접는 거는 쫌 그렇구요 ㅎㅎ.. 디버깅 해야겠네엽.
제가 가벼운 마음으로 하는 것이 아니라는 점 알아주세요.
거참 삐뚫어진 사람일세
질문자의 상황은 생각하지도 않고 자기 멋대로 판단하고 말도 안되는 헛소리나 늘어놓고..아마 저 사람 지말대로 컴공 졸업하고 실력도 없고 취직도 못해서 사회의 불만만 가득 쌓인 사람인가 봄. 이런 사람은 그냥 피하는게 상책.
0 추천
System.out.println(e.getStackTrace());라고 쓰면

e.getStackTrace()가 배열을 돌려주는데

배열을 toString해서 출력시키는데 무슨 내용인지 볼 수 없겠죠

배열을 for문돌려서 하나씩 찍어봐야 무슨내용인지 알겠죠

하지만 번거로우니

e.printStackTrace();를 쓰고 무슨 에러인지 보세요
alkyne (22,960 포인트) 님이 2015년 2월 7일 답변
댓글 감사합니다.

        File images = new File(Environment.getDataDirectory().getAbsolutePath());
        File[] imagelist = images.listFiles();
       
        Log.d("start","문제부분 시작");
        try{
            for (int i = 0; i < imagelist.length; i++) {
                System.out.println(imagelist[i].getAbsolutePath());
            }
            Log.d("running","수행 완료");
        } catch (Exception e){
            Log.e("Error","문제 발생");
            e.printStackTrace();           
        }
        Log.d("end","문제점 종료");

위 소스로 수정하고 돌렸더니
java.lang.NullPointerException
at com.example.androidonebuttontest.MainActivity.onCreate(MainActivity.java:31)
at android.app.Activity.performCreate(Activity.java:5008)
   ...(이하 생략)

이렇게 나오고, 31번째 줄에 발생했다는 예외가
                        for (int i = 0; i < imagelist.length; i++) {
이 부분입니다.

null값으로 넘겨졌다는 건데 혹시 권한하고 관련 있는 건가요 ??
제가 알기로는 외부 저장 메모리 접근할 때만 매니페스트 파일 수정하는 걸로 알고 있습니당..

+수정
if(imagelist == null)
     Log.e("imagelist is null", "ture");

하고 바로 밑에 찍어 봤더니 null 값 맞더군요.

참고로 Enviroment.getDataDirctory().getAbsolutePath()는 /data 입니다.
...