2012-03-12 1 views
0

지난 밤에 나는 집에서 일하고 this code을 보냈으며 Whatzit은 좋은 도움이되었습니다. 내가 다 작동 (dbFile 체크 아웃 주석 처리하고 그냥 sqlite 브라우저를 사용하여 만들고 싶었던 데이터베이스 변경 사항을 복사)있어.Mac OSX에서 Windows 7로 전환 한 후에 Android SQLite 코드가 작동하지 않습니다.

오늘 아침에 내 타블렛을 Windows 7 컴퓨터로 가져 와서 응용 프로그램을 제거하고 같은 코드를 실행하려고했습니다. 난 내 Mac에서 내 프로젝트를 압축하고 윈도우 머신에 그냥 새로 고침을 수행 이클립스 이클립스 같은 프로젝트 디렉토리에 압축을 푼했다

03-12 11:51:39.320: E/AndroidRuntime(20365): Caused by: java.io.IOException: trying to copy the database - ERROR: /data/data/mypackage/databases/restaurant.db: open failed: ENOTDIR (Not a directory)

: 나는 오류가 계속.

내가 시도 할 수있는 것에 대한 의견이 필요하십니까? 나는 .apk를 다시 복사하고 다시 설치하지만 아무것도 작동하지 않는 것으로 보인다. 감사. 실제로 실제 장치에서이 작업을 실행하고 *

- 모토로라 줌 4.0.3

private void copyDataBase(File dbFile) throws IOException { 
    try{ 
     InputStream dbStream = myDbContext.getAssets().open(dbName); 
     Log.e("In copyDataBase", "Environment Directory: " + Environment.getDataDirectory().canRead()); 
     Log.e("In copyDataBase", "Environment Directory: " + Environment.getDataDirectory().canWrite()); 
     Log.e("In copyDataBase", "Environment Directory: " + Environment.getExternalStorageDirectory()); 
     Log.e("In copyDataBase", "opened up file " + dbName + " successfully. - trying " + path.toString()); 
     OutputStream newDbFile = new FileOutputStream(DB_PATH + dbName); 

     byte[] buffer = new byte[1024]; 
     int length; 
     while((length = dbStream.read(buffer)) > 0){ 
      newDbFile.write(buffer); 
     } 

     newDbFile.flush(); 
     newDbFile.close(); 
     dbStream.close(); 
    } 
    catch(IOException e){ 

     throw new IOException("trying to copy the database - ERROR: " + e.getMessage()); 
    } 

} 

CanWrite라고하고 canRead의 결과를 모두 다시 와서 거짓. 내가 여기에 타이핑하고있는 것처럼 이것은 완전하게 작동하고 있었다. 이클립스와 같은 버전을 실행하는 윈도우 머신에 타블렛을 연결하는 것이 왜 효과가 있는지 모르겠습니다.

답변

0

오류는 지정한 디렉토리가 존재하지 않는다고 말하는 것입니다. 당신은 분명히 새로운 가상 장치에서이를 올바르게 실행하고 있습니까? 안드로이드의 버전은 처음에 개발 한 것과 같은가요?

+0

아니요. 실제 타블렛에 있습니다. - Motorola Xoom Android 4.0.3. – cspam

+0

상단에 몇 가지 코드를 추가했습니다. - 어떤 이유로 읽기 또는 쓰기가 불가능합니다. 나는 내가 집에 있었 ​​더라면 좋겠다고 생각한다. – cspam

+0

좋아, 나는 그것을 해결했다. 내 수업에서 하드 코딩 대신 데이터 경로에 Context.getFilesDir을 사용해야한다는 교훈을 얻었습니다. 왜/data/data/packagename/databases가 어젯밤에 작동하는지 모르겠습니다. 난 그게 맥 대 윈도우에서 일하는 것과 관련이 있다고 생각하지 않는다. 매우 신비 롭다. – cspam

관련 문제