2012-03-26 4 views
3

이것은 파일을 만드는 코드입니다. Android에서 파일에 바이트 배열을 작성하려면 어떻게해야합니까?

public void writeToFile(byte[] array) 
{ 
    try 
    { 
     String path = "/data/data/lalallalaa.txt"; 
     FileOutputStream stream = new FileOutputStream(path); 
     stream.write(array); 
    } catch (FileNotFoundException e1) 
    { 
     e1.printStackTrace(); 
    } 
} 

난 그냥 String path = "/data/data/lalallalaa.txt";

내가이 로그 캣 오류 메시지가 경로를 호출하여 내 서버 내 파일을 보내려고

가 :

03-26 18:59:37.205: W/System.err(325): java.io.FileNotFoundException: /data/data/lalallalaa.txt 

이해하지 않는 이유는 '수 이미 "생성"된 파일을 찾습니다.

+2

그건 정확, 예 이후 –

답변

7

파일이 이미 만들어 졌습니까? 이 추가

시도 :

File file = new File(path); 
if (!file.exists()) { 
    file.createNewFile(); 
} 
+0

을 스트림을 종료하는 것을 잊지 마세요. 실제로 새 파일을 만들지는 않았습니다. 그 방법에 대해 몰랐고 그것이 필요하다는 것을 몰랐습니다. 감사합니다 – EGHDK

0

파일이 존재하지 않거나 경우에 예외가 발생하거나 읽기 전용 파일에 쓰기를 시도하는 경우. 또한 전체 경로 이름을 사용하여 동일한 예외가 발생하는지 확인하여 올바른 상대 경로를 제공했는지 확인하십시오.

4

/data/data /는 Android에서 권한있는 디렉토리입니다. Apps는이 디렉토리에 쓰거나 읽을 수 없습니다.

대신 올바른 파일 이름을 찾으려면 context.getFilesDir()을 사용해야합니다.

+0

정보 주셔서 감사합니다. – EGHDK

2

난 당신이 더 나은 그것은 나에게 작동 명확한 코드

위한 FileOutputStream에의 가까운 기능을 추가 할 거라고 생각 완벽하게

try { 
    if (!File.exists()) { 
     File.createNewFile(); 
    } 
    FileOutputStream fos = new FileOutputStream(File); 
    fos.write(bytes); 
    fos.close(); 
} catch (Exception e) { 
    Log.e(TAG, e.getMessage()); 
} 
관련 문제