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