openFileOutput()对文件操作

android 中使用openFileOutput(name, null),对文件进行保存与读取操作

当要用到读取文件时,必须使用c.getFilesDir()来得到已经保存的路径:

ex:

private SQLiteDatabase copyDatabase2Device() throws IOException {
		String databasePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/";//"/dictionary/" ;
		String databaseName = databasePath + "adnnet.db";
		InputStream inStream = null;
		FileOutputStream outStream = null;
		
		if(!(new File(databaseName)).exists()) {
			
			inStream = c.getResources().openRawResource(R.raw.adnnet);
			outStream = new FileOutputStream(databaseName);
			int count = 0;
			if(inStream != null) {
				byte[] buffer = new byte[4096];
				while((count = inStream.read(buffer)) > 0) {
					outStream.write(buffer, 0, count);
				}
			}
			outStream.flush();
			if(inStream != null) {
				inStream.close();
				inStream = null;
			}
			
			if(outStream != null) {
				outStream.close();
				outStream = null;
			}
		}
		return SQLiteDatabase.openOrCreateDatabase(databaseName, null);
	}
	
	private boolean copyDatabase2Device1() {
		
		InputStream inStream;
		OutputStream outStream;
		try {
			if (isSdcardReally()&& !new File(c.getFilesDir()+"/adnnet.db").exists()) {
				inStream = c.getResources().openRawResource(R.raw.adnnet);
				outStream = c.openFileOutput("adnnet.db", Context.MODE_PRIVATE);
				int count = 0;
				byte[] buffer = new byte[4096];
				while ((count = inStream.read(buffer)) != -1) {
					outStream.write(buffer, 0, count);
				}
				outStream.flush();
				outStream.close();
				inStream.close();
			}
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}
	
	private String isDatabaseOK() {
		File file = c.getFilesDir();
		return file.getName();
	}
	
	private boolean isSdcardReally() {
		if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
			return true;
		return false;
	}
	
	public SQLiteDatabase openDatabase() {
		try {
			if (copyDatabase2Device1()) {
				db = SQLiteDatabase.openOrCreateDatabase(c.getFilesDir()+"/adnnet.db", null);
				return db;
			}
		} catch (Exception e) {
			e.printStackTrace();
			closeDatabase();
		}
		return null;
	}
	
	public void closeDatabase() {
		if(db != null) {
			db.close();
			db = null;
		}
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值