1. iOS sandbox mechanism
iOS applications can only read files in the file system created for the program, not access to other places, this area is a sandbox, so all non-code files to be stored in this, such as icons, sounds, images, attributes list, text files and so on.
1.1. Each application has its own storage space
1.2, the application can not turn over their walls to access the contents of other storage space
1.3, the application requests the data to pass the permission detection, if does not meet the condition, will not be released.
This diagram can only be understood from the surface of the sandbox is a security system, all the operations of the application through the system to execute, the core content is: Sandbox the application to perform various operations of the permission restrictions.
2. Open the emulator sandbox directory
Here's a look at where the emulator's sandbox folder is on your Mac computer.
The files are in a hidden folder under the personal User name folder, the Chinese is called the Repository, his directory is actually the library.
2.1 Method 1, you can set the display hidden files, and then open directly under the Finder. Here's how to set up viewing hidden files: Open terminal, enter name
command to display Mac hidden files: Defaults write Com.apple.finder appleshowallfiles-bool true
command to hide Mac hidden files: Defaults write Com.apple.finder Appleshowallfiles-bool false
After you lose, click Enter, exit the terminal, and restart the finder.
Restart Finder: Mouse click the Apple icon in the upper-left corner of the window and force exit-->finder-->
You can now see the repository folder.
Locate the/application Support/iphone simulator/folder after opening the repository. This is the sandbox directory of the simulator's various programs.
2.2 Method 2, This method is more convenient, on the Finder point-to go to the folder, enter the/users/username/library/application support/iphone simulator/to.
Username here to write your user name.
3. Directory structure
By default, each sandbox contains 3 folders: Documents, Library, and TMP. Applications can only read and write files in several directories because of the sandboxed mechanism applied
Documents: Apple recommends that file data that is created in the program or browsed in the program be saved in this directory, whichis included in itunes backup and restore
Library: The default settings or other status information of the stored program;
Library/caches: Store cached files,itunes does not back up this directory, files in this directory will not be deleted in the app exit
TMP: Provides a place to create temporary files on the fly.
itunes backs up all documents and library files while syncing with the iphone.
When the iphone restarts, all of the TMP files are discarded.
We create a Iossandbox project to expand the practice of sandbox and file read and write operations.
After creation, locate the corresponding directory on the emulator,
This is the catalogue all expanded.
Here are the three directories mentioned above: Documents, Library, tmp
Let's see how to get the application sandbox directory. The directory that includes the sandbox for the real machine.
1, get the program's home directory
[CPP] view Plaincopy
- NSString *homedirectory = Nshomedirectory ();
- NSLog (@"path:%@", homedirectory);
Printing results:
[CPP] view Plaincopy
- 2012-06-17 14:00:06.098 iossandbox[3536:f803]/users/rongfzh/library/application Support/iPhone SIMULATOR/5.1/ Applications/3b8ec78a-5eee-4c2f-b0cb-4c3f02b996d2
What about the catalogue on the real machine? Let's see.
2012-06-17 14:25:47.059 iossandbox[4281:f803]/var/mobile/applications/3b8ec78a-5eee-4c2f-b0cb-4c3f02b996d2
It can be seen that the directory on the real machine is/var/mobile/applications/this directory, and the emulator is not the same. This is the home directory, and the other subdirectories are the same as the emulator.
2. Get the document directory
[CPP] view Plaincopy
- Nsarray *paths = Nssearchpathfordirectoriesindomains (NSDocumentDirectory, Nsuserdomainmask, YES);
- NSString *path = [Paths objectatindex:0];
- NSLog (@"path:%@", Path);
Print results
[CPP] view Plaincopy
- 2012-06-17 14:00:06.099 iossandbox[3536:f803] path:/users/rongfzh/library/application Support/iPhone SIMULATOR/5.1/ Applications/3b8ec78a-5eee-4c2f-b0cb-4c3f02b996d2/documents
3. Get the Cache directory
[CPP] view Plaincopy
- Nsarray *paths = Nssearchpathfordirectoriesindomains (Nscachesdirectory, Nsuserdomainmask, YES);
- NSString *path = [Paths objectatindex:0];
- NSLog (@"%@", Path);
Print results
[CPP] view Plaincopy
- 2012-06-17 14:03:50.431 iossandbox[3628:f803]/users/rongfzh/library/application Support/iPhone SIMULATOR/5.1/ Applications/3b8ec78a-5eee-4c2f-b0cb-4c3f02b996d2/library/caches
4. Get the Library directory
[CPP] view Plaincopy
- Nsarray *paths = Nssearchpathfordirectoriesindomains (Nslibrarydirectory, Nsuserdomainmask, YES);
- NSString *path = [Paths objectatindex:0];
- NSLog (@"%@", Path);
Print results
[CPP] view Plaincopy
- 2012-06-17 14:07:17.544 iossandbox[3733:f803]/users/rongfzh/library/application Support/iPhone SIMULATOR/5.1/ Applications/3b8ec78a-5eee-4c2f-b0cb-4c3f02b996d2/library
5. Get the TMP directory
[CPP] view Plaincopy
- NSString *tmpdir = Nstemporarydirectory ();
- NSLog (@"%@", TmpDir);
Print results
[CPP] view Plaincopy
- 2012-06-17 14:08:07.824 iossandbox[3782:f803]/var/folders/g7/246bh79130zblw0yjjtc55cw0000gn/t/
6. Writing files
[CPP] view Plaincopy
- Nsarray *paths = Nssearchpathfordirectoriesindomains (NSDocumentDirectory, Nsuserdomainmask, YES);
- NSString *docdir = [Paths objectatindex:0];
- if (!docdir) {
- NSLog (@"Documents directory not Found");
- }
- Nsarray *array = [[Nsarray alloc] initwithobjects:@"Contents", @"content", nil];
- NSString *filepath = [Docdir stringbyappendingpathcomponent:@"TestFile.txt"];
- [Array Writetofile:filepath atomically:yes];
Note: We also run on the real machine, write the file, and then read the content from the real machine.
Write input array, inside is two strings, one will read out to print.
Write us in the program sandbox directory to see the file TestFile.txt
Open the file see the content is this, is an XML format of the plist file, the data format to save the content.
[CPP] view Plaincopy
- <?xml version="1.0" encoding="UTF-8"?>
- <! DOCTYPE plist public "-//apple//dtd plist 1.0//en" "Http://www.apple.com/DTDs/PropertyList-1.0.dtd" >
- <plist version="1.0" >
- <array>
- <string> content </string>
- <string>content</string>
- </array>
- </plist>
7. Read the file
[CPP] view Plaincopy
- nsarray *paths = Nssearchpathfordirectoriesindomains (nsdocumentdirectory, nsuserdomainmask, yes);
- nsstring *docdir = [paths objectatindex:0];
- nsstring *filepath = [docdir stringbyappendingpathcomponent:@ " TestFile.txt "];&NBSP;&NBSP;
- nsarray *array = [[nsarray alloc]initwithcontentsoffile:filepath];
- nslog (@
Printing results:
After parsing the above file, the contents are printed out.
[CPP] view Plaincopy
- 2012-06-17 14:14:46.249 iossandbox[3918:f803] (
- "\u5185\u5bb9",
- Content
- )
Read and print the file path on the real machine:
2012-06-17 14:25:47.059 iossandbox[4281:f803]/var/mobile/applications/3b8ec78a-5eee-4c2f-b0cb-4c3f02b996d2/ Documents/testfile.txt
(
"\u5185\u5bb9",
Content
)
can also be written and printed on a real machine.
Copyright statement: This article by http://blog.csdn.net/totogo2010/Original, welcome reprint share. Please respect the author's labor, reproduced when the statement and the author of the blog link, thank you