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

안드로이드 파일 입출력 도와주세요!!

0 추천
아래 처럼 소스는 완성 하였습니다.

저는 내부 메모리에 파일을 읽고 쓰기를 하였습니다.

이렇게 완성하면 파일 읽고 쓰기에는 문제가 없습니다.

그런데 저는 실물 txt 파일을 가져다 다른곳에 써야 하는데 그렇게 경로를 설정하고 싶은데 어떻게 해야 할지를 모르겠습니다.

제가 쓴 작성데로 하면, 파일을 접근 할수가 없던데..

예를 들면, 다운로드 폴더안에 log.txt 파일이 있어서 제가 직접 그걸 접근 하고자 합니다.

ㅠㅠ 방법좀 알려주세요

 

SimpleDateFormat df = new SimpleDateFormat("yyyy_MM_dd", Locale.KOREA);
        String str_date = df.format(new Date());

        String driPath = getFilesDir().getAbsolutePath()+"/Log/";
        File file = new File(driPath);

        Log.d("str_Path_Full","str_Path_Full" + file);

        // 일치하는 폴더가 없으면 생성한다.
        if (!file.exists())
        {
            file.mkdirs();
        }

        File saveFile = new File(driPath + "Log_"+str_date+".txt");

        if (!saveFile.exists())
        {
            try{
                saveFile.createNewFile();
            }catch (IOException e){

            }
            Log.d("파일생성","여기에 와??-2");
        }

        if (!saveFile.exists()) {
            Log.d("str_Path_Full", "파일 생성후 파일 없음");
        }else{
            Log.d("str_Path_Full","파일 생성후 파일 존재");
        }

        try
        {

            FileInputStream fis = new FileInputStream(saveFile);
            BufferedReader bufferReader = new BufferedReader(new InputStreamReader(fis));
            String content="", temp="";
            while( (temp = bufferReader.readLine()) != null ) {
                content += temp;
            }

            BufferedWriter buf = new BufferedWriter(new FileWriter(saveFile, true));

            buf.write(text);
            buf.write("\n");
            buf.flush();
            buf.close();
        }
        catch (IOException e)
        {
            // 적절한 예외처리를 해주면됩니다.
            e.printStackTrace();
        }
hyeran (160 포인트) 님이 2017년 1월 12일 질문

1개의 답변

0 추천

getFilesDir() 로 얻은 경로는 해당 앱에서만 접근이 가능한 경로로 알고 있습니다.

아래와 같이 내장메모리의 경로를 얻어 해당 경로에 저장하시면

외부앱에서도 접근이 가능합니다.

android.os.Environment.getExternalStorageDirectory().getAbsolutePath()
바램 (19,650 포인트) 님이 2017년 1월 13일 답변
답변 감사합니다.
그런데 저렇게 경로를 주면 sd카드가 있는경우 접근하는 방법이 아닌가요???
제가..너무 초보라..ㅠㅜ
내장메모리가 존재하는 모델의 경우 내장메모리의 경로가 반환되고,
내장메모리가 없이 외장메모리만 존재하는 경우(요즘 모델들에서는 거의 없죠)에는 외장메모리의 경로가 반환됩니다.
안드로이드 레퍼런스나 도큐먼트에서 말하는 ExternalStorage라는 개념은 외장SD카드 개념이 아닌 Internal을 제외한 경로. 즉, /data/data/(자신의 패키지명) 을 제외한 모든 경로를 말합니다. 안드로이드에서 별도로 외장 SD카드에 대한 지원은 하지 않으며(레퍼런스 폰에서는 SD카드가 없는것도 이 때문) 각 개발사에서 임의로 집어넣은 스펙입니다. 그러므로 sd카드의 경로도 개발사마다 제각각 입니다.
...