LoginSignup
1
0

More than 1 year has passed since last update.

【Swift】Sandbox アプリ内ファイル保存取得削除

Posted at

SandboxのDocumentディレクトリにフォルダを作成して、そのフォルダへPDFファイルを保存、取得、削除する

GitHub
ソースコード

PDFファイルを保存

    func saveToDocumentDirectory(data: NSData) -> URL? {

        guard let documentDirectory = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) else { return nil }
        let pDFsDirectory = documentDirectory.appendingPathComponent("PDFs", isDirectory: true)
        do {
            try FileManager.default.createDirectory(at: pDFsDirectory, withIntermediateDirectories: true, attributes: nil)
        }
        catch {
            print("失敗した")
        }
        // PDFファイルを保存
        let filePath = pDFsDirectory.appendingPathComponent("receipt-" + UUID().uuidString + ".pdf")
        do {
            try data.write(to: filePath)
            print(filePath)
            return filePath
        } catch {
            print(error.localizedDescription)
            return nil
        }
    }

PDFファイルを取得と削除

    var PDFpath: [URL]?
    
    func initialize() {
        // 初期化
        PDFpath = []
        guard let documentDirectory = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) else { return }
        // PDFsというフォルダを作成
        let pDFsDirectory = documentDirectory.appendingPathComponent("PDFs", isDirectory: true)
        do {
            try FileManager.default.createDirectory(at: pDFsDirectory, withIntermediateDirectories: true, attributes: nil)
        }
        catch {
            print("失敗した")
        }
        do {
            // ファイル一覧を取得
            let directoryContents = try FileManager.default.contentsOfDirectory(at: pDFsDirectory, includingPropertiesForKeys: nil)
            // if you want to filter the directory contents you can do like this:
            let pdfFiles = directoryContents.filter{ $0.pathExtension == "pdf" }
            let pdfFileNames = pdfFiles.map{ $0.deletingPathExtension().lastPathComponent }
            // PDFファイルを取得
            for fileName in pdfFileNames {
                let content = pDFsDirectory.appendingPathComponent(fileName + ".pdf")
                do {
                    // PDFファイルを削除
                    try FileManager.default.removeItem(at: content)
                }
                catch let error {
                    print(error)
                }
            }
        }
        catch {
            print(error)
        }
    }
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0