マウントされたボリュームをスキャンする方法(サーバーに接続されており、ワークステーションにafp://を介してマウントされています)を特定し、パス、ファイル名、アセットIDをcsvファイルに出力します。アセットIDは、ファイル名の最後の10桁です(例:afilename_1234567890.mov)一部のファイルにはアセットID(無視されます)があり、一部のファイルには複数の "。" (たとえば、afilename_videofile_23.98_prores_1234567890.mov)。私は必要なボリュームを得ることができます(時間の少ないマシンのバックアップドライブ)が、ファイルをスキャンしようとすると面倒です。私は様々な例を見てApple FileManagerのドキュメントを研究しましたが、具体的なものはありません。特定のファイルタイプを見つけるためにマウントされたボリュームをトラバースする
私は、必要な行為を行うために次のルーチンを使用します。let enumerator = fileManager.enumerator(atPath:url.path)!、列挙子は常に空白です。
私は間違った仮定をしていますか、私は間違いなく何かを欠いています。
func FindFilesWithAssetIDs() {
// Find all the mounted volumes
let keys: [URLResourceKey] = []
let volumes = FileManager.default.mountedVolumeURLs(includingResourceValuesForKeys: keys, options: [])!
var count = 0
var volumeCount = volumes.count
var volumeItem = 0
let filterExtensions = ["mxf", "mov", "mp4", "scc", "cap", "srt", "txt", "rtf", "wav", "mp3", "m2v", "aif"]
// Scan all the mounted volumes, one at a time
for url in volumes {
let components = url.pathComponents
if components.count > 1 && components[1] == "Volumes" {
if components[2] == "Time Machine Backup" { continue } // Check if the volume is the staff backup disk. If it is, move on to the next volume
guard let volumeTypeKey = try? url.resourceValues(forKeys: [.volumeIsLocalKey]) else { return } // Make sure we are scanning the volumes and not any local folders like /private
let volumeType: Bool = volumeTypeKey.volumeIsLocal!
if volumeType == false {
let fileManager = FileManager.default
let enumerator = fileManager.enumerator(atPath: url.path)!
while let element = enumerator.nextObject() as? String {
if element.hasSuffix("mxf") || element.hasSuffix("mov") { // a test. I would much rather use a filterExtension method or a switch statement
// do something
count += 1
}
}
NSLog(url.path, " ", String(count))
// NSLog(url.path)
}
}
volumeItem += 1
}
}
ご協力いただければ幸いです。
Duh !! ...「App Sandbox」スイッチが何らかの理由でオンになっていたため、コードがネットワークボリュームにアクセスできなくなりました。ですから、 "element"変数を与えられた場合、 "。"で始まるファイルをどのようにフィルタリングできますか? (見えないファイル)、 "filterExtensions"変数を使用してファイルをフィルタリングするより良い方法はありますか? –
user1462486
あなたの以前の質問に対する回答を受け入れると、私はもっと詳細な回答を与えることが大いに奨励されます:-) –