안드로이드 개발 질문/답변
(글 수 45,052)
밑에부분과 같이 코딩을 하였는데.
DDMS로 확인한 결과 DB가 생성이 안되네요.ㅠㅠ
어떤것이 문제인지요?ㅠㅠ
public class androidda extends Activity {
/** Called when the activity is first created. */
public static final String ROOT_DIR = "/data/data/com.androidda/";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public static void initialize(Context ctx) {
// check
File folder = new File(ROOT_DIR + "databases");
folder.mkdirs();
File outfile = new File(ROOT_DIR + "databases/" + "kwa.db");
if (outfile.length() <= 0) {
AssetManager assetManager = ctx.getResources().getAssets();
try {
InputStream is = assetManager.open("kwa.db", AssetManager.ACCESS_BUFFER);
long filesize = is.available();
byte [] tempdata = new byte[(int)filesize];
is.read(tempdata);
is.close();
outfile.createNewFile();
FileOutputStream fo = new FileOutputStream(outfile);
fo.write(tempdata);
fo.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
DDMS로 확인한 결과 DB가 생성이 안되네요.ㅠㅠ
어떤것이 문제인지요?ㅠㅠ
public class androidda extends Activity {
/** Called when the activity is first created. */
public static final String ROOT_DIR = "/data/data/com.androidda/";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public static void initialize(Context ctx) {
// check
File folder = new File(ROOT_DIR + "databases");
folder.mkdirs();
File outfile = new File(ROOT_DIR + "databases/" + "kwa.db");
if (outfile.length() <= 0) {
AssetManager assetManager = ctx.getResources().getAssets();
try {
InputStream is = assetManager.open("kwa.db", AssetManager.ACCESS_BUFFER);
long filesize = is.available();
byte [] tempdata = new byte[(int)filesize];
is.read(tempdata);
is.close();
outfile.createNewFile();
FileOutputStream fo = new FileOutputStream(outfile);
fo.write(tempdata);
fo.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
2010.08.10 12:33:43
혹시 DB크기가 1MB를 넘는게 아닌지요?
asset에는 1MB넘는 파일을 읽을 수 없기 때문에, asset에 큰 파일을 넣으려면 1MB단위로 자른 다음에 사용할때 합쳐서 사용하셔야 합니다.
asset에는 1MB넘는 파일을 읽을 수 없기 때문에, asset에 큰 파일을 넣으려면 1MB단위로 자른 다음에 사용할때 합쳐서 사용하셔야 합니다.
2010.08.10 12:35:43
1MB가 넘지 않습니다.!!
폴더자체도 생성이 안되는데.. 제가 코드를 잘못넣은건지요??음.;;
더 이유를 찾아보겠습니다.ㅠㅠ
답변들 정말 감사합니다.^^
폴더자체도 생성이 안되는데.. 제가 코드를 잘못넣은건지요??음.;;
더 이유를 찾아보겠습니다.ㅠㅠ
답변들 정말 감사합니다.^^
2010.08.11 11:44:15
제가 만든 WithBible이라는 프로그램에 비슷한 내용이 있습니다.
데이터베이스 파일이 asset 이 아닌 raw 폴더에 있다는 것만 다르네요.
http://slegdrim.blogspot.com/2010/08/pc-sqlite.html 참고하시구요.
ROOT_DIR 한번 확인해 보세요. 혹시 권한이 없는 폴더인지...
가능하시면 context.getFilesDir() 메소드를 이용하심이 어떨런지...
데이터베이스 파일이 asset 이 아닌 raw 폴더에 있다는 것만 다르네요.
http://slegdrim.blogspot.com/2010/08/pc-sqlite.html 참고하시구요.
ROOT_DIR 한번 확인해 보세요. 혹시 권한이 없는 폴더인지...
가능하시면 context.getFilesDir() 메소드를 이용하심이 어떨런지...




다른 코딩은 크제 문제 없어보이는데요..