2

XAP ファイルを保存しようとしていますが、基本的には zip ファイルのようなもので、アーカイブして保存することはできますが、多くのフォルダーに追加されますか?

XAP ファイルをアーカイブするために Ionic.Zip DLL を使用しています。

ファイルは私のパスに保存されますが、それを開くとフォルダー users があり、そこに Shaun フォルダーがあり、そのフォルダーに Documents フォルダーがあり、 FormValue フォルダーにあり、そこに 3 つのファイルがあります私は圧縮しました。

Xap ファイルには、圧縮した 3 つのファイルのみを含める必要があり、内部のすべての余分なフォルダーを含める必要はありません。

using (ZipFile zip = new ZipFile())
{
// add this map to zip
zip.AddFile("C://Users//Shaun//Documents//FormValue//" + property_details_locality_map); 
zip.AddFile("C://Users//Shaun//Documents//FormValue//data.xml");
zip.AddFile("C://Users//Shaun//Documents//FormValue//dvform.dvform"); 
zip.Save("C://Users//Shaun//Documents//FormValue//NewValuation.xap");
}
4

2 に答える 2

1
List<string> filesToBeAdded = new List<string>();
filesToBeAdded.Add("C://Users//Shaun//Documents//FormValue//" + property_details_locality_map);
filesToBeAdded.Add("C://Users//Shaun//Documents//FormValue//data.xml");
filesToBeAdded.Add("C://Users//Shaun//Documents//FormValue//dvform.dvform");
zip.AddFiles(filesToBeAdded, false, "ShaunXAP"); // you could pass empty string here instead of "ShaunXAP" 
zip.Save("C://Users//Shaun//Documents//FormValue//NewValuation.xap");

これにより、すべてのファイルが1つの共通フォルダー(この場合は「ShaunXAP」)に配置され、アーカイブされたファイルのフォルダー階層は無視されます。

于 2012-10-01T09:09:33.287 に答える
1

オーバーロードを使用して、2番目のパラメーターzip.AddFile(string fileName, string directoryPathInArchive)に空の文字列を指定します。""

zip.AddFile("C://Users//Shaun//Documents//FormValue//" + property_details_locality_map, ""); 
zip.AddFile("C://Users//Shaun//Documents//FormValue//data.xml", "");
zip.AddFile("C://Users//Shaun//Documents//FormValue//dvform.dvform", ""); 

ドキュメントから:

/// <param name="directoryPathInArchive">
///   Specifies a directory path to use to override any path in the fileName.
///   This path may, or may not, correspond to a real directory in the current
///   filesystem.  If the files within the zip are later extracted, this is the
///   path used for the extracted file.  Passing <c>null</c> (<c>Nothing</c> in
///   VB) will use the path on the fileName, if any.  Passing the empty string
///   ("") will insert the item at the root path within the archive.
/// </param>
于 2012-10-01T09:10:31.993 に答える