CS185c
Chris Pollett
Sep. 28, 2009
~/Library/Application Support/iPhoneSimulator/User/
Window > Show View > Other... > Android > File Explorer.
NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES); //look for Documents directories in user home folder //YES means expand tilde directories NSString *documentsDirectory = [paths objectAtIndex:0]; //Will only be one such dir so same //For temporary dir could have done //NSString *tempPath = NSTemporaryDirectory NSString *filename = [documentsDirectory stringByAppendingPathComponent:@"theFile.txt"]; if([[NSFileManager defaultManager] fileExistsAtPath:filename]) { NSArray *readArray = [[NSArray alloc] initWithContentsOfFile:filename]; NSLog(@"I read from the file: %@", [readArray objectAtIndex:0]); [readArray release]; } NSMutableArray *storeArray = [[NSMutableArray alloc] init]; [storeArray addObject:@"Some interesting Data"]; [storeArray writeToFile:filename atomically:YES ]; // writing such an array stores the data as XML much like a plist NSLog(@"I wrote some data"); [storeArray release];
File testFile = new File("data/data/org.pollett/files/filename.txt"); //another useful directory is /sdcard for the sd card in the device //if it exists. res/raw is also a useful directory for resource files FileInputStream fis = null; if(testFile.exists()) { try { fis = this.openFileInput("filename.txt"); byte[] reader = new byte[fis.available()]; while(fis.read(reader) != -1){} Log.i("AndroidPersistence", "I just read:\n" + new String(reader) ); } catch (IOException ie) { Log.e("AndroidPersistence", "File Read Error"); } finally { if(fis !=null) { try {fis.close();} catch(Exception e) {} } } }
FileOutputStream fos = null; try { fos = this.openFileOutput("filename.txt", Context.MODE_PRIVATE); fos.write("hi there\n".getBytes()); Log.i("AndroidPersistence", "I just wrote stuff\n"); } catch (IOException ie) { Log.e("AndroidPersistence", "File Write Error"); } finally { if(fos !=null) { try {fos.close();} catch(Exception e) {} } }
To create an informational log entry in Android:
CREATE TABLE IF NOT EXISTS EMPLOYEE (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, AGE INTEGER)
DROP TABLE IF EXISTS MY_TABLE
INSERT OR REPLACE INTO EMPLOYEE (ID, NAME, AGE) VALUES (5, 'Bob', 30)Note this s
DELETE FROM tablename WHERE condAn example condition might be age: > 25
SELECT col_name1, col_name2, ..., col_name_n /*to empahsize what table do: table_name.col_name */ FROM table_name_1, table_name_2, ..., table_name_m WHERE condan example condition might be: EMPLOYEE.ID = PROJECT.directorID AND PROJECT.budget = 1000000
sqlite3 *database; int result = sqlite3_open("/path/to/database", &database);
char *cStringPath = [someStringObj UTF8String];
sqlite3_close(database);
char *errorMsg; const char *createSQL ="CREATE TABLE IF NOT EXISTS PEOPLE (ID INTEGER PRIMARY KEY, HOBBY TEXT)"; int result = sqlite3_exec(database, createSQL, NULL, NULL, &errorMsg);
NSString *query = @"SELECT * FROM PEOPLE"; sqlite3_stmt *statement; int result = sqlite3_prepare_v2(database, [query UTF8String], -1, &statement, nil); //could check if result is SQLITE_OK while(sqlite3_step(statement) == SQLITE_ROW){ // for the current row let's get out some columns int id = sqlite3_column_int(statement, 0); //0th column's data char *hobby = (char*)sqlite3_column_text(statement, 1); // do something with the data for this row } sqlite3_finalize(statement);