从URL下载Zip文件时,在尝试手动提取时,会将ZIP文件显示为空

时间:2017-10-11 10:57:41

标签: c#

我正在从网址下载一个zip文件,当我尝试手动提取它只是为了检查它是否正确显示它显示它是空的并且不允许我。

dcast(mDT, Type ~ factor(Problem, levels=c("X","Y","Z","W","V")), fun.agg = length)

# or more permanently

mDT[, Problem := factor(Problem, levels=c("X","Y","Z","W","V"))]
dcast(mDT, Type ~ Problem, fun.agg = length)

另外,我将如何以编程方式提取它,以便我可以进入文件的内容并提取更多内容。什么是最简单的方法?

3 个答案:

答案 0 :(得分:0)

尝试使用Async方法及其附带的事件。 像这样:

train_labels = keras.utils.to_categorical(train_labels, num_classes)
test_labels = keras.utils.to_categorical(test_labels, num_classes)

尝试一下,看看它是否适合你的拉链

修改 如果上述代码不起作用,还有一些值得尝试的可能性。

1:尝试将void Foo() { var webClient = new WebClient(); var totalBytes = 0l; var destFile = new FileInfo(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "platform-tools-latest-windows.zip")); webClient.DownloadProgressChanged += (s, e) => Debug.WriteLine($"Download progress changed: { e.ProgressPercentage }% ({ e.BytesReceived } / { (totalBytes = e.TotalBytesToReceive) })"); webClient.DownloadFileCompleted += (s, e) => { destFile.Refresh(); if (destFile.Length != totalBytes) { // Handle error } else { // Do nothing? } }; webClient.DownloadFileAsync(new Uri("https://dl.google.com/android/repository/platform-tools-latest-windows.zip"), destFile.FullName); } 附加到上述方法的末尾,以强制正在运行的线程等待WebClient完成下载

2:首先尝试下载原始数据(while (webClient.IsBusy);),然后将缓冲区刷新到文件中。

注意:这只适用于小(呃)文件!

byte[]

答案 1 :(得分:0)

您可以使用以下代码解压缩zip文件。

System.IO.Compression.ZipFile.ExtractToDirectory(@"C:/1.zip",@"c:\example\extract");

不要忘记从程序集中添加System.IO.Compression.FileSystem

答案 2 :(得分:0)

在Firefox中通过HTTP标头检查URL。在给出zip文件之前,发现此URL是某种API。 URL具有作为参数传递的参数。

我安装了RestSharp然后完成了这个:

var client = new RestClient(URL);
var request = new RestRequest("&user=bam&pass=boom", Method.GET);
var queryResult = client.Execute(request);
string zipPath = C:/Temp + zippy.zip";
client.DownloadData(request).SaveAs(zipPath);