2012-09-30 8 views
0

나는이 코드를 android에 작성하여 .txt 파일의 존재 여부를 확인했습니다.파일이 있는지 여부를 어떻게 알 수 있습니까?

File file_a =new File("a.txt"); 

InputStream in3 = getResources().openRawResource(R.raw.b); 
     FileOutputStream out3 = null; 


     try { out3=openFileOutput("a.txt",Context.MODE_WORLD_WRITEABLE); 
     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     byte[] buff3 = new byte[1024]; 
     int read3 = 0; 

     try { 
      while ((read3 = in3.read(buff3)) > 0) { 
       out3.write(buff3, 0, read3); 
      } 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } finally { 
       try { 
       in3.close(); 
       out3.close(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

     } 

    boolean a=file_a.exists(); 

항상 false을 반환합니다.

어떻게 해결할 수 있습니까?

+3

파일이 저장된 위치를 읽을 권한이 있습니까? –

+0

나는 당신이 당신의 안드로이드 장치의 루트 디렉토리에 글을 쓰는 것을 허락 받았는지 의심 스럽다. 반환 값은 올바른 것입니다. – WarrenFaith

+0

이해가 안되니? 파일이 존재합니다. 나는 값을 읽었습니다. 그러나 부울 a는 거짓입니까? 방법 것입니다? 파일이 존재합니다 –

답변

0

를 반환합니다 당신은 File을 만들 수 있습니다

+0

이것은 잘못된 것입니다. 처음에는 루트 디렉토리에 액세스해서는 안됩니다. 앱의 내부 저장 용량 또는 SD 카드를 사용합니다. –

+0

하지만 내 휴대 전화에서 작동합니까? 내 전화기가 루팅 된 장치가 아닌가? –

+0

나는 그것이 작동하지 않는다고 말하는 것이 아닙니다. 나는 그것을해서는 안된다는 말입니다. 그리고 기록을 보면 모든 장치에서 작동하지 않습니다. –

0

항상 false가 아닙니다.

File#exists()이 추상 패스 명이 나타내는 파일 또는 디렉토리가 존재하는 경우에만 true. 그렇지 않으면 false.

새 파일을 만들면 File#createNewFile을 호출해야합니다. 성공적으로 생성되면 true를 반환하고 그렇지 않으면 false를 반환해야합니다.

파일이 이미 생성 된 경우 File#getAbsolutePath()을 검사하여 파일의 절대 경로가 동일한지 확인할 수 있습니다.

+0

그래서 어떻게 파일이 존재하는지 이해할 수 있습니다 –

1

파일을 전혀 만들지 않았습니다. 파일 핸들을 인스턴스화하면됩니다. 그이 후이

if(!file.exist()){ 
file.createNewFile(); 
} 

를 사용

존재하지 경우 file.exist();를 호출 할 때 그것이 내가 해결책이다 경우 파일 읽기를 시도 발견 true

+0

내 질문을 편집합니다 이미 만들었지 만 파일이 없다고 말하고 있지만 존재합니다 –

1

의 catch 블록을 얻지 않습니다. 모두에게 감사드립니다.

try { 
     FileInputStream deneme=openFileInput("a.txt"); 
    } catch (FileNotFoundException e1) { 
     // TODO Auto-generated catch block 
     kopyala(); 
     e1.printStackTrace(); 
    } 
0

파일 경로와 파일 이름을 입력해야합니다. 당신이 내부에 파일을 작성한 경우

File file_a = new File(Environment.getExternalStorageDirectory() + "yourpath/a.txt"); 

:이 하위 디렉토리에있는 경우, 경로의 나머지 부분을 추가

File file_a = new File(Environment.getExternalStorageDirectory() + "/a.txt"); 
boolean a=file_a.exists(); 

: 파일을 가정하면이 루트 디렉토리에 SD 카드에 "data/data/your.package.name"경로 어딘가에 있습니다.

File file_a = new File(Environment.getExternalStorageDirectory() + "date/data/your.package.name/a.txt"); 
+0

내 파일이 없습니다 sdcard –

+0

'new File (String directory, String filename)'을 사용하여 연결을 제거 할 수 있습니다. – mrres1

관련 문제