1. 程式人生 > >NSFileManager和檔案的判斷操作、獲取目錄、檔案建立和目錄建立。

NSFileManager和檔案的判斷操作、獲取目錄、檔案建立和目錄建立。

/*首先,建立NSFileManagment物件

 *接著,將ceshi資料夾拖到桌面上使用。可以下載ceshi檔案百度網盤:http://pan.baidu.com/s/1mgms8SK

 *==============判斷操作=============

 *

 *  1)判斷是檔案或資料夾是否存在

 *  2) 判斷是檔案還是目錄

 *  3)判斷是否可讀

 *  4)判斷是否可寫

 *  5)判斷是否可刪除

 *

 * 對應下面的 isOK() 方法

 *

 *

 *++++++++++++++獲取目錄方式++++++++++++++

 *

 *  1)獲取指定路徑下,所有的檔案或者資料夾路徑

 *  2)獲取指定路徑下,所有的檔案、資料夾、該資料夾的子資料夾和子檔案路徑

 *

 * 對應下面的 getDirectory() 方法

 *

 *

 *^^^^^^^^^^^^^^檔案建立和目錄建立^^^^^^^^^^^^^^

 *

 *  1)檔案建立

 *  2)獲得檔案屬性方式

 *  3)目錄建立,

 *  4)拷貝檔案

 *  5)移動檔案

 *  6)刪除檔案

 *

 * 對應下面的 creatAndOptions()

*/

/*首先,建立NSFileManagment物件, 
 *接著,將ceshi資料夾拖到桌面上使用。
 *==============判斷操作=============
 *
 *  1)判斷是檔案或資料夾是否存在
 *  2) 判斷是檔案 還是目錄
 *  3)判斷是否可讀
 *  4)判斷是否可寫
 *  5)判斷是否可刪除
 *
 * 對應下面的 isOK() 方法
 *
 *
 *++++++++++++++獲取目錄方式++++++++++++++
 *
 *  1)獲取指定路徑下,所有的檔案或者資料夾路徑
 *  2)獲取指定路徑下,所有的檔案、資料夾、該資料夾的子資料夾和子檔案路徑
 *
 * 對應下面的 getDirectory() 方法
 *
 *
 *^^^^^^^^^^^^^^檔案建立和目錄建立^^^^^^^^^^^^^^
 *
 *  1)檔案建立
 *  2)獲得檔案屬性方式
 *  3)目錄建立,
 *  4)拷貝檔案
 *  5)移動檔案
 *  6)刪除檔案
 *
 * 對應下面的 creatAndOptions()
*/


#import <Foundation/Foundation.h>

//1判斷操作宣告
void isOK();

//2獲取目錄方式
void getDirectory();

//3檔案建立和操作
void creatAndOptions();

/*檔案來回移動時用到的全域性變數。
檔案存在的時候,將拷貝的目標檔案刪除掉使用。
*/
NSInteger flag;



int main(int argc, const char * argv[]) {
    @autoreleasepool {

        
    //1 isOK()函式執行
    //   isOK();
        
    //2 getDirectory()函式執行
    //   getDirectory();
    
    //3 creatAndOptions()函式執行
        creatAndOptions();
    
    }
    return 0;
}

#pragma mark========判斷操作==========
void isOK(){
    //建立NSFileManager物件 ===>>下面建立的是單例物件,
    NSFileManager *fm = [NSFileManager defaultManager];

    //拼接一個檔案路徑
  NSString *path = @"/Users/這裡要變成你的使用者名稱/Desktop/.DS_Store";
    //NSString *str = @"/Users/這裡要變成你的使用者名稱/Desktop";

    //1)判斷是檔案是否存在  (主要是看路徑指的是目錄還是檔案)
    BOOL isYes;
    isYes = [fm fileExistsAtPath:path];
    if (isYes) {
        NSLog(@"檔案目錄或檔案存在 ");
    }else{
        NSLog(@"檔案目錄獲檔案不存在 ");
    }
    
    
    //2)判斷是檔案還是目錄
    BOOL isDir;
#warning 和上面的  fileExistAtPath:  要區分開;
    [fm fileExistsAtPath:path isDirectory:&isDir];
    if (isDir) {
        NSLog(@"這是個****資料夾****");
    }else{
        NSLog(@"這是個****檔案**** ");
    }
    
    //3)判斷檔案是否可讀
    BOOL isRead;
    isRead = [fm isReadableFileAtPath:path];
    if (isRead) {
        NSLog(@"這個檔案或者資料夾++++可讀++++ ");
    }else{
        NSLog(@"這個檔案或者資料夾++++不可讀++++");
    }
    
    //4)檔案是否可寫
    BOOL isWrite;
    isWrite = [fm isWritableFileAtPath:path];
    if (isWrite) {
        NSLog(@"這個檔案或者資料夾----可寫----");
    }else{
        NSLog(@"這個檔案或者資料夾----不可寫----");
    }
    
    //5)檔案是否可刪
    BOOL isDel;
    isDel =   [fm isDeletableFileAtPath:path];
    if (isDel) {
        NSLog(@"這個檔案或者資料夾^^^^可刪^^^^");
    }else{
        NSLog(@"這個檔案或者資料夾^^^^不可刪^^^^");
    }
    
}

#pragma mark+++++++獲取目錄方式++++++++
void getDirectory(){
    //建立NSFileManager物件
    NSFileManager *fm = [NSFileManager defaultManager];
    //定義路徑
   // NSString *path = @"/Users/這裡要變成你的使用者名稱/Desktop";
      //自己在桌面建立了ceshi資料夾,進行的測試
      NSString *path 
[email protected]
"/Users/這裡要變成你的使用者名稱/Desktop/ceshi"; //1)獲取指定路徑下,所有的檔案或者資料夾路徑 NSError *errDir = nil; NSArray *contents = [fm contentsOfDirectoryAtPath:path error:&errDir]; if (nil == errDir) { NSLog(@"獲得目錄下檔案以及資料夾\n %@",contents); }else{ NSLog(@"目錄獲得失敗\n 錯誤: %@",errDir); } //2)獲取指定路徑下,所有的檔案、資料夾、該資料夾的子資料夾和子檔案路徑 //方式一:以遞迴方式來獲取。(不推薦使用,因為在手機上可能會佔記憶體) NSArray *subPathAtPathReturnArray = [fm subpathsAtPath:path]; NSLog(@"以遞迴方式獲取\n %@",subPathAtPathReturnArray); //方式二:非遞迴方式來獲取 NSError *errSubPath = nil; NSArray *subPathOfDirectoryReturnArray = [fm subpathsOfDirectoryAtPath:path error:&errSubPath]; if (nil == errSubPath) { NSLog(@"非遞迴方式獲取\n %@",subPathOfDirectoryReturnArray); }else{ NSLog(@"獲取失敗"); } } #pragma mark^^^^^檔案建立和目錄建立^^^^^ void creatAndOptions(){ //建立NSFileManager物件 NSFileManager *fm = [NSFileManager defaultManager]; //定義路徑(這裡面要有該路徑,而且要帶著你要寫入檔案的檔名。) NSString *path
[email protected]
"/Users/這裡要變成你的使用者名稱/Desktop/ceshi/youyi.txt"; #warning 如果檔案沒有存在,檔案建立和獲取檔案屬性不能通時進行。 //1檔案建立 //1)要儲存在檔案的內容 NSString *contentStr = @"每當我錯過一個女孩,我就往山上放一塊磚,於是乎有了長城"; //2)把字串轉化為data型別 (目的:用來存放到檔案中) NSData *data = [contentStr dataUsingEncoding:NSUTF8StringEncoding]; //3)建立檔案 BOOL isCtreat; isCtreat = [fm createFileAtPath:path contents:data attributes:nil]; if (isCtreat) { NSLog(@"檔案建立###成功###"); }else{ NSLog(@"檔案建立###失敗###"); } //2獲取檔案屬性 NSError *errAttrbute = nil; //自己建立的ceshi/11.txt檔案 NSString *pathAttribute = @"/Users/這裡要變成你的使用者名稱/Desktop/ceshi/attribute.txt"; NSDictionary *fileAttribute = [fm attributesOfItemAtPath:pathAttribute error:&errAttrbute]; if (nil == errAttrbute) { NSLog(@"檔案屬性獲得成功,屬性內容如下\n %@",fileAttribute); }else{ NSLog(@"檔案屬性獲得失敗"); } //3 目錄的建立 withIntermediateDirectories--是否補上沒有的資料夾目錄 BOOL isCreDirAt; NSString *pathCreDirAt = @"/Users/這裡要變成你的使用者名稱/Desktop/ceshi/creatDirecr/"; NSError *errorDirectory = nil; isCreDirAt = [fm createDirectoryAtPath:pathCreDirAt withIntermediateDirectories:YES attributes:nil error:&errorDirectory]; if (isCreDirAt) { NSLog(@"資料夾建立成功"); }else{ NSLog(@"資料夾建立失敗,失敗原因:%@",errorDirectory); } //4 拷貝檔案 (當目標路徑已經有拷貝的檔案時,這時提示拷貝錯誤。) BOOL isCopy; NSError *errorCopy = nil ; //原始檔路徑 NSString *sourcePath = @"/Users/這裡要變成你的使用者名稱/Desktop/ceshi/copy.txt"; //目標檔案路徑 NSString *targerPath = @"/Users/這裡要變成你的使用者名稱/Desktop/ceshi/bbbb/copy.txt"; isCopy = [fm copyItemAtPath:sourcePath toPath:targerPath error:&errorCopy]; if (isCopy) { NSLog(@"拷貝成功"); }else{ NSLog(@"拷貝出錯,出錯內容: %@",errorCopy); if ([fm fileExistsAtPath:targerPath]) { BOOL isExistsDel; NSError *errorExistDirDel; isExistsDel = [fm removeItemAtPath:targerPath error:&errorExistDirDel]; if (isExistsDel) { NSLog(@"刪除成功"); }else{ NSLog(@"刪除失敗 %@",errorExistDirDel); } } } //5 移動檔案 BOOL isMove; NSError *errorMove; NSString *sourcePathMove = @"/Users/這裡要變成你的使用者名稱/Desktop/ceshi/move.txt"; //目標檔案路徑 NSString *targerPathMove = @"/Users/這裡要變成你的使用者名稱/Desktop/ceshi/bbbb/move.txt"; if ([fm fileExistsAtPath:sourcePathMove]) { isMove = [fm moveItemAtPath:sourcePathMove toPath:targerPathMove error:&errorMove]; if (isMove) { NSLog(@"移動檔案成功,移動路徑為: %@",targerPathMove); }else{ NSLog(@"檔案移動失敗,失敗原因 %@",errorMove); } }else{ isMove = [fm moveItemAtPath:targerPathMove toPath:sourcePathMove error:&errorMove]; if (isMove) { NSLog(@"移動檔案成功,移動路徑為: %@",targerPathMove); }else{ NSLog(@"檔案移動失敗,失敗原因 %@",errorMove); } } //6 刪除檔案 BOOL isDirDel; NSError *errorDirDel; NSString *delete = @"/Users/這裡要變成你的使用者名稱/Desktop/ceshi/delete.txt"; isDirDel = [fm removeItemAtPath:delete error:&errorDirDel]; if (isDirDel) { NSLog(@"刪除成功"); }else{ NSLog(@"刪除失敗 %@",errorDirDel); NSString *deletPath = @"/Users/這裡要變成你的使用者名稱/Desktop/ceshi/delete.txt"; //1)要儲存在檔案的內容 NSString *contentStr = @"每當我錯過一個女孩,我就往山上放一塊磚,於是乎有了長城"; //2)把字串轉化為data型別 (目的:用來存放到檔案中) NSData *data = [contentStr dataUsingEncoding:NSUTF8StringEncoding]; //3)建立檔案 BOOL isCtreat; isCtreat = [fm createFileAtPath:deletPath contents:data attributes:nil]; if (isCtreat) { NSLog(@"DeletPath檔案建立###成功###"); }else{ NSLog(@"DeletPath檔案建立###失敗###"); } } }


相關推薦

Javascript入門(二)變量獲取元素操作元素

javascrip ima 報錯 nload change -c win attribute ttr 一、變量 Javascript 有五種基本數據類型 number、String、boolean、undefined、null 一種復合類型:object

第十三章 對文本進行排序單一重復操作:sort命令uniq命令

對文本進行排序、單一和重復操作 sort命令 uniq命令 第十三章 對文本進行排序、單一和重復操作:sort命令、uniq命令 sort命令 名字解釋 sort命令 它將文件進行排序,並將排序結果標準輸出。sort命令即可以從特定的文件,也可以從stdin中獲取輸入。 語法 sort (選項)

JavaScript的函式(定義與解析匿名函式函式傳參return關鍵字)陣列(操作資料的方法多維陣列陣列去重)

函式 函式就是重複執行的程式碼片。 1、函式定義與執行 <script type="text/javascript"> // 函式定義 function aa(){ alert('hello!'); } // 函式執行

Python 讀取檔案下所有內容獲取檔名擷取字元寫回檔案

 Python 讀取檔案下所有內容、獲取檔名、擷取字元、寫回檔案 # coding=gbk import os import os.path #讀取目錄下的所有檔案,包括巢狀的資料夾 def GetFileList(dir, fileList): newDir = dir

【Java工具十二】java 身份證驗證,包含香港臺灣,根據身份證獲取性別戶籍等

package com.xxx.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.D

PHP根據身份證號碼驗證獲取星座生肖性別函式

首先介紹一下身份證含義 新的18位身份證號碼各位的含義: 1-2位省、自治區、直轄市程式碼; 3-4位地級市、盟、自治州程式碼; 5-6位縣、縣級市、區程式碼; 7-14位出生年月日,比如19670401代表1967年4月1日; 15-17位為順序號,其中17位男為單數,

JSP實現檔案上傳下載刪除(附:JS獲取上傳檔案的檔名)

1.檔案上傳 直接複製專案了,你們有需要的自己看著改吧 表單部分截圖  (新增分類按鈕可忽略) jsp頁面html部分 <form action="" id="form" enctype="multipart/form-data" method="post">

檔案基本操作獲取資料夾下的所有子資料夾及其名稱

獲取資料夾下的所有子資料夾及其名稱: 用到的主要控制元件:TextBox,FolderBrowserDialog,Button,TreeView等。 相關程式碼: private string temStr; Thread thdAddF

c++對檔案進行操作之遍歷雙層檔案結構

/*本程式碼實現遍歷雙層次層次的目錄結構*/ #include<stdio.h> #include<iostream> #include<io.h> #include<cstring> using namespace std; const ch

AJAX獲取節點 [object HTMLInputElement]

問題描述: 1、我想把一個JSP頁面的表單裡的資料,用AJAX非同步提交給資料庫。結果資料庫不改變。 2、第二個問題,我舉個例子在js中的程式碼: <input type="sumbit" name="" id="china"> <script>

vue 父元件主動獲取子元件的資料方法 子元件主動獲取父元件的資料方法

Header.vue 1 <template> 2 3 4 <div> 5 6 <h2>我是頭部元件</h2> 7 8 9 <button @click="

離線快取manifest獲取經緯度獲取地圖

一.離線快取manifest作用:伺服器開啟執行一次後,斷開伺服器也能顯示資訊1.建立demo.manifest檔案編輯的內容如下,放在同級目錄或則其他可訪問的位置即可程式碼: CACHE MANIFEST #v1.0.0 CACHE: img/1.png demo14.html 2

java學習路程(javaEE)之獲取表單資料獲取引數request域會話技術(Cookie)

一.獲取表單資料 //設定瀏覽器資料格式 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOExcept

go提交json獲取json解析json

猜你喜歡 一、提交json  func main() { url := "http://restapi3.apiary.io/notes" fmt.Println("URL:>", url) var jsonStr = []byte

MUI-numbox(數字輸入框),最小值最大值步長獲取設定值重定義

本文主要介紹numbox(數字輸入框),最小值、最大值、步長、獲取值、設定值、重定義功能 mui提供了數字輸入框控制元件,可直接輸入數字,也可以點選“+”、“-”按鈕變換當前數值;預設numbox控制元件dom結構比較簡單,如下: <div class="mui-numbox"&g

vue專案登陸設定cookie獲取cookie 刪除 cookie

1.定義方法到儲存全域性變數 的 global.js 檔案中 設定 domain 值 const domain= ’ 域名 ‘; 設定該cookie只對 改域名生效 //設定cookie

NSFileManager檔案判斷操作獲取目錄檔案建立目錄建立

/*首先,建立NSFileManagment物件,   *接著,將ceshi資料夾拖到桌面上使用。可以下載ceshi檔案百度網盤:http://pan.baidu.com/s/1mgms8SK  *==============判斷操作=============  *  * 

Qt總結之三:磁碟檔案操作遍歷資料夾檔案目錄,並過濾獲取檔案資訊字尾名字首名(三)

前言 本節內容主要包括磁碟容量檢測、磁碟內指定或特定檔案的操作 話不多說,先上效果圖 共分為兩個部分,第一部分是檢測磁碟容量,第二部分是篩選磁碟內指定檔案(test.txt)或特定檔案(.txt / .png型別檔案) 獲取磁碟容量關鍵函式:【fileapi.h】 

Qt總結之二:遍歷資料夾檔案目錄,並過濾獲取檔案資訊字尾名字首名(二)

前言 需要在特定目錄或磁碟下查詢特定檔案 一、篩選目錄 (一)單一目錄下遍歷,篩選特定檔案 QDir dir("./SaveFiles"); QFileInfoList list = dir.entryInfoList(); (二)裝置所有磁碟中遍歷 QF

Qt總結之一:遍歷資料夾檔案目錄,並過濾獲取檔案資訊字尾名字首名(一)

一、採用遞迴和QDir實現資料夾下所有檔案遍歷的方法 #include <QDir> bool FindFile(const QString & path) {     QDir dir(path);   if (!dir.exists(