私のドキュメントフォルダーには、そのフォルダーにfolder1という名前のフォルダーがあります。css、js、main.htmlなどがあります。webviewでmain.htmlを開いています....サーバーで更新が行われた場合、ダウンロードしていますfolder2 をキャッシュ ディレクトリに解凍します。たとえば、ドキュメント ディレクトリの folder1 に css、js、main.html があり、サーバーで新しい更新が行われ、folder2 をダウンロードして、folder2 のキャッシュ ディレクトリに解凍しています。css のみを持っています。ここで、これらの folder1 と folder2 のコンテンツを比較したいのですが、この例で css が両方のフォルダーに等しい場合、ドキュメント ディレクトリ folder1 の css を削除し、folder2 にある css を folder1 に置き換えたいと考えています...これは次回の更新があればcssではなくjsをダウンロードするかもしれませんが、jsだけを置き換えたいと思います。内容を確認して置き換える方法を誰か助けてもらえますか...助けてください
1 に答える
私の理解では、Documentsディレクトリを使用してUIWebViewおよびCachesディレクトリ内にロードされるCSSとHTMLを保存し、サーバーから最新のCSSとHTMLファイルを解凍して保存しています。解凍した後、CachesフォルダーのCSSおよびJSファイルの内容をDocumentsフォルダーのCSSおよびJSファイルの内容と比較し、変更されている場合は置き換えます。
これには2つのステップがあります。
CachesディレクトリのどのファイルをDocumentsディレクトリのどのファイルと比較する必要があるかがわかるように、両方のフォルダ間でファイル名を標準化します。比較するファイルに同じ名前を付けます。
サーバーからファイルをフェッチしてCachesフォルダーで解凍すると、NSFileManagerクラスを使用してDocumentsディレクトリ内の同じファイル(名前はポイント1で説明したものと同じ)にアクセスし、NSStringで読み取って、別のファイルと比較できます。 Cachesフォルダーのコンテンツを含むNSString。比較で等しいが返された場合は、スキップできます。それ以外の場合は、使用できます
NSFileManager *manager = [NSFileManager defaultManager]; [manager copyItemAtPath:sourcePath(CachesDir) toPath:destinationPath(DocumentsDir) error:&error]
これにより、最新の解凍されたアイテムがCacheDirectoryからDocumentsDirectoryにコピーされます。
ただし、デバイスがマップされているiCloudアカウントにバックアップされているため、ドキュメントディレクトリにコンテンツを保存することを再確認することをお勧めします。これについてさらに読んでください。