你好,歡迎來到IOS教程網

 Ios教程網 >> IOS使用技巧 >> IOS技巧綜合 >> oc文件基本讀寫及操作

oc文件基本讀寫及操作

編輯:IOS技巧綜合
[摘要]本文是對oc文件基本讀寫及操作的講解,對學習IOS蘋果軟件開發有所幫助,與大家分享。

代碼:

#import <Foundation/Foundation.h>

//NSString 寫文件
void stringWriteToFile(){
    NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"/Documents/test.txt"];
    NSString *s = @"test";
    [s writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil];
    
    
    NSString *str = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"\nstring = %@",str);
    
    NSString *testtxt = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"\ntest.text = %@",testtxt);
}

//NSArray 寫文件
void arrayWriteToFile(){
    NSArray *arr = @[@"a",@"b",@"b",@"c"];
    NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"/Documents/test2.txt"];
    [arr writeToFile:path atomically:YES];
    
    
    NSArray *a = [[NSArray alloc] initWithContentsOfFile:path];
    NSLog(@"array = \n%@",a);
    
    NSString *s = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"\ntest2.txt = \n%@",s);
}

//NSDictionary 寫文件
void dictionaryWriteToFile(){
    NSDictionary *dic = @{@"a":@"1",
                          @"b":@"2",
                          @"c":@"3",
                          @"d":@"4"};
    NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"/Documents/test3.txt"];
    [dic writeToFile:path atomically:YES];
    
    NSDictionary *d = [[NSDictionary alloc] initWithContentsOfFile:path];
    NSLog(@"\ndictionary = \n%@",d);
    
    NSString *s = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"\ntest3.txt = \n%@",s);
}

//atomically 是否原子級  即事務性寫入
//NSNumber、NSDate、NSData都可以通過writeToFile寫入文件,該文件為純文本類型,如果將後綴名改為plist即為xcode屬性列表文件

int main(int argc, const char * argv[]) {
    
    //該方法是創建一個實例,但是使的NSFileManager的單例模式將失去效果
    NSFileManager *fm0 = [[NSFileManager alloc] init];
    
    //defaultManager使用單例模式創建NSFileManager對象
    NSFileManager *fm1 = [NSFileManager defaultManager];
    
    NSFileManager *fm2 = [NSFileManager defaultManager];
    
    NSLog(@"\nfm0 = %p,fm1 = %p,fm2 = %p",fm0,fm1,fm2);
    
    NSData *data = [[NSString stringWithFormat:@"main"] dataUsingEncoding:NSUTF8StringEncoding];
    
    NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/main.txt"];
    
    
    if (![fm1 fileExistsAtPath:path]) {
        if ([fm1 createFileAtPath:path contents: data attributes:nil]) {
            NSLog(@"create success");
            NSDictionary *d = [fm1 attributesOfItemAtPath:path error:nil];
            
            NSLog(@"\nattributesOfItemAtPath = \n%@",d);
            
            //NSFileSize是預定義的文件屬性key,可通過查看系統文件獲取其他屬性key並通過
            //以下方法獲取其屬性值
            NSNumber *filesize = [d valueForKey:NSFileSize];
            
            NSLog(@"\nfilesize = %@",filesize);
            
            //讀文件
            NSData *data1 = [fm1 contentsAtPath:path];
            
            NSString *s = [[NSString alloc] initWithData:data1 encoding:NSUTF8StringEncoding];
            
            //文件系統的屬性
            //總空間,已用空間,可用空間,文件數量,
            NSLog(@"\nattributesOfFileSystemForPath = \n%@",[fm1 attributesOfFileSystemForPath:path error:nil]);
            
            NSLog(@"\nmain.txt = %@",s);
        }
    }
    else{
        
        
        NSString *copypath = [NSHomeDirectory() stringByAppendingPathComponent:@"/Documents/main_copy.txt"];
        [fm1 copyItemAtPath:path toPath:copypath error:nil];
        
        
        //重命名可以目標路徑與主路徑一致但是文件名不同
        NSString *movepath = [NSHomeDirectory() stringByAppendingPathComponent:@"/Documents/main_move.txt"];
        [fm1 moveItemAtPath:path toPath:movepath error:nil];
        
        //刪除文件
        if ([fm1 removeItemAtPath:path error:nil]) {
            NSLog(@"remove %@ success",path);
        }
        if ([fm1 removeItemAtPath:copypath error:nil]) {
            NSLog(@"remove %@ success",copypath);
        }
        if ([fm1 removeItemAtPath:movepath error:nil]) {
            NSLog(@"remove %@ success",movepath);
        }
    }
    
    stringWriteToFile();
    
    arrayWriteToFile();
    
    dictionaryWriteToFile();
    
    return 0;
}

結果:

2015-03-08 21:18:26.064 NSFileManagerDemo[1686:79942] 
fm0 = 0x1001145d0,fm1 = 0x100114620,fm2 = 0x100114620
2015-03-08 21:18:26.075 NSFileManagerDemo[1686:79942] remove /Users/yoran_yang/Documents/main_copy.txt success
2015-03-08 21:18:26.076 NSFileManagerDemo[1686:79942] remove /Users/yoran_yang/Documents/main_move.txt success
2015-03-08 21:18:26.076 NSFileManagerDemo[1686:79942] 
string = test
2015-03-08 21:18:26.077 NSFileManagerDemo[1686:79942] 
test.text = test
2015-03-08 21:18:26.078 NSFileManagerDemo[1686:79942] array = 
(
    a,
    b,
    b,
    c
)
2015-03-08 21:18:26.078 NSFileManagerDemo[1686:79942] 
test2.txt = 
<?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>a</string>
    <string>b</string>
    <string>b</string>
    <string>c</string>
</array>
</plist>
2015-03-08 21:18:26.079 NSFileManagerDemo[1686:79942] 
dictionary = 
{
    a = 1;
    b = 2;
    c = 3;
    d = 4;
}
2015-03-08 21:18:26.079 NSFileManagerDemo[1686:79942] 
test3.txt = 
<?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">
<dict>
    <key>a</key>
    <string>1</string>
    <key>b</key>
    <string>2</string>
    <key>c</key>
    <string>3</string>
    <key>d</key>
    <string>4</string>
</dict>
</plist>
Program ended with exit code: 0
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved