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;
		}
	}


你可能感兴趣的:(openFileOutput()对文件操作)