2017-06-24 9 views
0

が実装されていません。迅速3.1.1.-リリース(atPath:<a href="https://github.com/IBM-Swift/swift-ubuntu-docker" rel="nofollow noreferrer">https://github.com/IBM-Swift/swift-ubuntu-docker</a></p> <p>とpathBにpathAからファイルをコピーしよう:toPathは:)まだ私は迅速Ubuntuのドッキングウィンドウを使用してい

fatal error: copyItem(atPath:toPath:) is not yet implemented: file Foundation/NSFileManager.swift, line 376 
Illegal instruction 

コマンド::私は致命的なエラーが出るの実行中に

# swift --version 

応答

Swift version 3.1.1 (swift-3.1.1-RELEASE) 
Target: x86_64-unknown-linux-gnu 

オンラインを私はそれが実施されるべきであるという情報を見つけました:

https://bugs.swift.org/browse/SR-2639

誰かを助けることができますか?ありがとう!

+1

を作品別の解決策を見つけた:https://github.com/apple/swift-corelibs-foundation/blob /swift-3.1-branch/Foundation/FileManager.swift#L375。 –

+0

ああ、はい - "NSUnimplemented()" ...画像をコピーするなどの簡単な回避策はありますか? – John

答えて

1

copyItem(atPath:toPath:)は、Linux用のFoundationフレームワークのSwift 3.1 branch に実装されていません。

open func copyItem(atPath srcPath: String, toPath dstPath: String) throws { 
    NSUnimplemented() 
} 

何のことができます。たとえば、どのように行うcopyItem(atPath:toPath:) の簡易版である

let fm = FileManager.default 
if let contents = fm.contents(atPath: srcPath) { 
    if !fm.createFile(atPath: destPath, contents: contents, attributes: nil) { 
     print("cannot write destination file") 
    } 
} else { 
    print("cannot read source file") 
} 

があるさmaster branchに実装されています。

ファイルは、あなたがこのような、たとえば、チャンク の代わりに、ファイル全体をメモリに読み込んでコピーすることが非常に大きい場合:正常に動作し

guard let srcFile = FileHandle(forReadingAtPath: srcPath) else { 
    fatalError("cannot open source file") 
} 
guard let destFile = FileHandle(forWritingAtPath: destPath) else { 
    fatalError("cannot open destination file") 
} 
while case let data = srcFile.readData(ofLength: 1024 * 1024), data.count > 0 { 
    destFile.write(data) 
} 
srcFile.closeFile() 
destFile.closeFile() 
0

感謝。私はその間にも、どうやらそれはLinux用スウィフト3.1ブランチに実装されていません;-)

let data = try Data.init(contentsOf: URL.init(fileURLWithPath: path)) 
guard FileManager.default.createFile(atPath: url.path, contents: data, attributes: nil) else { 
    print("Can not read/create the file") 
    return false 
} 
関連する問題

 関連する問題