Forum huvudsida -> Programmering -> string object inuti For Loop C#
Sidor: 1
netKen | 11:23 - 22:a December 2009 | Post #1 | |
Medlem Inlägg: 26 Skicka PM |
Hoj! Jag har inte fattat ett skvatt hur jag ska göra, har googlat men inte hittat bra exempel. Jag har url till xmlfiler som jag vill ladda hem till min HD, några tusen dokument jag vill slippa ladda ner manuellt. Det är en engångs nedladdning, när jag väl har dem behövs ej for loop igen, så därför söker jag enklast möjliga kod för att hantera detta. Jag vet inte exakt hur många xmlfiler som finns men jag vill inte ladda hem för mycket så därför tror jag for loop passar så jag bestämmer start och slut själv. Har frågat codeproject.com men de säger jag ska läsa en nybörjarebok, har kollat i böcker men kan ej hitta hur jag ska gå till väga, de hade som förslag att använda while eller for loop och string object som nedan visar. Men hur fortsättningen ska vara har jag inte den blekaste aning om?! url slutar med matchID=255200 och fortsätter några tusen fram http://www.somedomain.com/../../XMLmatchID=255200 for loop for (int i = 255200;i != 256200; i ++) string object string sFile = string.format{"http://www.somedomain.com/../../XMLmatchID=255200{0}",ID); |
martin310 | 15:18 - 22:a December 2009 | Post #2 | |
Medlem Inlägg: 132 Skicka PM |
ID:et ska väl vara där 255200 är? ------------------------- Hjälp jorden med Granola, det är gratis och funkar på både Windows och Linux, och försämrar inte datorns prestandad! |
Kekke | 21:27 - 22:a December 2009 | Post #3 | |
Medlem Inlägg: 4 Skicka PM |
for (int i = 255200; i < 256200; i++) { string sFile = "http://www.somedomain.com/../../XMLmatchID=" + i.ToString(); } ------------------------- Ingen signatur! Senast redigerad 21:28 - 22:a December 2009 |
martin310 | 09:28 - 23:e December 2009 | Post #4 | |
Medlem Inlägg: 132 Skicka PM |
Citat av Kekke:
i.ToString() Är onödigt! i Istället! ------------------------- Hjälp jorden med Granola, det är gratis och funkar på både Windows och Linux, och försämrar inte datorns prestandad! |
netKen | 19:05 - 3:e Januari 2010 | Post #5 | |
Medlem Inlägg: 26 Skicka PM |
Ändrade så det går att testa med verklig url Vad är mitt nästa steg för att dessa filer ska laddas ner??, nu visas bara länkarna i listview utan att de i själva verket har laddats ner från just url:en. private void button1_Click(object sender, EventArgs e) { for (int i = 3484; i < 3489; i++) { string sFile = string.Format("http://netken.se/test/id=1&omgang={0}", +i); // se vilka filer som hämtas listView1.Items.Add(new ListViewItem(sFile)); } Senast redigerad 18:09 - 24:e Januari 2010 |
netKen | 13:46 - 7:e Januari 2010 | Post #6 | |
Medlem Inlägg: 26 Skicka PM |
Min dator har tyvärr krashat fullständigt. Så gör er inget besvär att svara på tråden på ett tag. |
netKen | 19:28 - 9:e Januari 2010 | Post #7 | |
Medlem Inlägg: 26 Skicka PM |
sådärja, datorn igång igen. så, jag ska spara till min hd och spara till min databas. ska ta en titt på sqlbulkcopy eftersom det är tusentals filer att ladda ner. Sen ska det bara laddas ett fåtal xmldokument till databasen 1-2 ggr/veckan, till det vet jag inte, är SqlDataAdapter något att föredra? och slutligen spara till hd, vet någon vad jag ska kolla på? |
martin310 | 19:35 - 9:e Januari 2010 | Post #8 | |
Medlem Inlägg: 132 Skicka PM |
SqlDataAdapter är bra om du ska använda listor i Windows Forms så det är nog något att föredra. Att spara till HD är ju bara att använda fil-funktionerna i C# (en snabb googling så hittar du det!) ------------------------- Hjälp jorden med Granola, det är gratis och funkar på både Windows och Linux, och försämrar inte datorns prestandad! |
netKen | 21:37 - 10:e Januari 2010 | Post #9 | |
Medlem Inlägg: 26 Skicka PM |
spara till hd, har googlat en massa men hittar inte vad jag söker. Vill spara filerna med innehållet med samma namn som url i en mapp. Kan nu hämta den första url'en i loopen. Fattar inte hur resten ska gå till (är väl för gammal å trög,hehe) try { XmlDocument doc = new XmlDocument(); doc.Load(sFile); doc.Save("C:/test.xml"); } catch (Exception ex) { MessageBox.Show(ex.Message); } |
martin310 | 19:09 - 11:a Januari 2010 | Post #10 | |
Medlem Inlägg: 132 Skicka PM |
Ta bara namnet på den "C:\" + sFile Om det var det du mena? ------------------------- Hjälp jorden med Granola, det är gratis och funkar på både Windows och Linux, och försämrar inte datorns prestandad! |
netKen | 20:05 - 11:a Januari 2010 | Post #11 | |
Medlem Inlägg: 26 Skicka PM |
Ja, det var tänkt så men Illegal characters blir det då, men har hittat en del på nätet om det. Hoppas det ordnar sig |
netKen | 12:38 - 15:e Januari 2010 | Post #12 | |
Medlem Inlägg: 26 Skicka PM |
det verkar kört, hittar inget som beskriver hur man laddar ner många filer samtidigt till hd. Hur är det med den funktionen i C++? Eller något annat språk? |
martin310 | 14:10 - 15:e Januari 2010 | Post #13 | |
Medlem Inlägg: 132 Skicka PM |
Använd socket och StremWriter! ------------------------- Hjälp jorden med Granola, det är gratis och funkar på både Windows och Linux, och försämrar inte datorns prestandad! |
netKen | 22:17 - 28:e Januari 2010 | Post #14 | |
Medlem Inlägg: 26 Skicka PM |
Tack martin310, för din hjälp Det verkar som ingen har kodat detta i C# ladda ner 1 fil är inga problem, men när det kommer till flera hittar jag ingen lösning, oavsett metod som används. Det finns många många "Download Manager" exempel men ingen som kör igenom loop och sparar direkt till hårddisk. Inte vad jag har sett iaf. Fortsätter så länge med nästa project, i annan tråd så småningom! |
Kekke | 18:14 - 9:e Februari 2010 | Post #15 | |
Medlem Inlägg: 4 Skicka PM |
Såhär laddar jag ner filer med min youtube downloader: private void Download() { try { Uri objUri = new Uri(YoutubeDownload.GetYoutubeLink(this.txtYoutubeLink.Text)); //Get file content WebRequest wrRequest = WebRequest.Create(objUri); WebResponse wrResponse = wrRequest.GetResponse(); Stream objStream = wrResponse.GetResponseStream(); Int64 fileSize = wrResponse.ContentLength; if (!Directory.Exists(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\KekTube")) { Directory.CreateDirectory(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\KekTube"); } FileStream fsStream = new FileStream(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\KekTube\" + this.lblOrgTitle.Text, FileMode.Create, FileAccess.Write); byte[] bteRead = new byte[256]; int iCount = objStream.Read(bteRead, 0, bteRead.Length); while (iCount > 0) { fsStream.Write(bteRead, 0, iCount); iCount = objStream.Read(bteRead, 0, bteRead.Length); this.Invoke(new UpdateProgessCallback(this.UpdateProgress), new object[] { fsStream.Length, fileSize }); } fsStream.Close(); objStream.Close(); wrResponse.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { if (this.cboMp3.Checked) { YoutubeDownload.EncodeFormatFromMp4ToMp3(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\KekTube\" + this.lblOrgTitle.Text, Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\KekTube\" + this.lblSaveAs.Text, false); } else { File.Copy(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\KekTube\" + this.lblOrgTitle.Text, Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\KekTube\" + this.lblSaveAs.Text, true); File.Delete(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\KekTube\video4.mp4"); } if (this.tboLog.InvokeRequired) { string strUpdateText = "[*] File completly downloaded, it can be accessed at " + Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\KekTube\"; // It's on a different thread, so use Invoke. SetTextCallback d = new SetTextCallback(updateLog); this.Invoke (d, new object[] { strUpdateText }); } } } ------------------------- Ingen signatur! |
netKen | 19:46 - 10:e Februari 2010 | Post #16 | |
Medlem Inlägg: 26 Skicka PM |
Tack så mycket Kekke. Ska kolla i nästa vecka, ska bli spännande att se om det funkar bra för mig, hurra hurra! |
netKen | 21:55 - 8:e April 2010 | Post #17 | |
Medlem Inlägg: 26 Skicka PM |
Tack för all hjälp. tycker det är svårt så därför använder jag nu mig av codeprojects "My Downloader" (open source). http://www.codeproject.com/KB/IP/MyDownloader.aspx |
netKen | 21:55 - 13:e April 2010 | Post #18 | |
Medlem Inlägg: 26 Skicka PM |
satt å lekte lite å vips så funkar det att ladda ner till mapp, så nu har jag iaf en bra början. Nu har jag använt både webclient och httpwebrequest klasserna, det finns säkert smidigare sätt att skriva koden på men för mig funkar det. Tar ca 30 sekunder vid nedladdning av 700 dokument (7kb/dokument), Ladda ner stora filer är inte att rekommendera, har provat med ca 80kb och det funkar bra men med större hänger det sig och tar all kraft från datorn. För att få filerna sparade i olika format ex. xml/xls/txt lägg till efter {0}: String.Format(@"C:UsersKMJDownloadsfoldernamn{0}.xml", ("omgang=") + i, Path.GetExtension(sFiles))); private void button1_Click(object sender, EventArgs e) { for (int i = 3484; i < 3489; i++) { string sFiles = string.Format("http://netken.se/test/id=1&omgang={0}", +i); listView1.Items.Add(new ListViewItem(sFiles)); { WebClient wc = new WebClient(); HttpWebRequest request = null; HttpWebResponse response = null; string ret = ""; try { request = (HttpWebRequest)WebRequest.Create(sFiles.Trim()); request.Method = "GET"; request.ContentType = "application/xml"; request.Timeout = 15000; response = (HttpWebResponse)request.GetResponse(); ret = new StreamReader(response.GetResponseStream(), Encoding.Default).ReadToEnd(); wc.DownloadProgressChanged += new DownloadProgressChangedEventHandler(wc_DownloadProgressChanged); //spara till mapp wc.DownloadFileAsync(new Uri(sFiles.Trim()), String.Format(@"C:UsersKMJDownloadsfoldernamn{0}", ("omgang=") + i, Path.GetExtension(sFiles))); response.Close(); } catch { } finally { if (response != null) { response.Close(); } } } } } public void wc_DownloadProgressChanged(Object sender, DownloadProgressChangedEventArgs e) { pbDownloadStatus.Value = e.ProgressPercentage; } } } Senast redigerad 13:09 - 31:a Juli 2010 |
netKen | 19:40 - 21:a April 2010 | Post #19 | |
Medlem Inlägg: 26 Skicka PM |
vidare vill jag istället använda folderbrowserdialog. men när jag lagt till vald mapp behövs för att det ska fungera (tankas ner), hur lägger jag till slash och var? wc.DownloadFileAsync(new Uri(sFiles.Trim()), String.Format(textBoxSpara.Text + "{0}.xml", ("omgang=") + i, Path.GetExtension(sFiles))); private void btnFolder_Click(object sender, EventArgs e) { if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) { textBoxSpara.Text = folderBrowserDialog1.SelectedPath; } } Senast redigerad 19:44 - 21:a April 2010 |
netKen | 17:21 - 3:e Maj 2010 | Post #20 | |
Medlem Inlägg: 26 Skicka PM |
lösning= @"" och ev. använda Combine.Path |
netKen | 08:17 - 15:e Mars 2015 | Post #21 | |
Medlem Inlägg: 26 Skicka PM |
Ojdå..längesedan jag var här och inte har jag hållt på så värst mycket med programmering heller men jag har i alla fall gjort klart så jag kan hämta filer...efter 5 år..litet program men lång tid det tog
int LoopStart;
LoopStart = int.Parse(TBLoopStart.Text);
//förkortningar
//rensar ListWiev
//For Loop {
HttpWebRequest request = null; // The stopwatch which we will be using to calculate the download speed sw.Start();
request = (HttpWebRequest)WebRequest.Create(sFiles.Trim());
request.Timeout = 15000;
wc.DownloadProgressChanged += new DownloadProgressChangedEventHandler(wc_DownloadProgressChanged); response.Close();
}
}
}
}
//Visar text när filer har laddats ner
btnOpenDownloadedFolder.Visible = true;
private void wc_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
sw.Start();
}
textBoxsparatill.Text = folderBrowserDialog1.SelectedPath;
} |
Sidor: 1
Forum huvudsida -> Programmering -> string object inuti For Loop C#
Du får inte posta i den här tråden | Till toppen
Datum
2024-12-22 15:25
Vecka: 51
Besökare
Inloggade: 0
Gäster: 605
Medlemmar
Medlemmar: 53576
Forum
Senaste inlägget: HAHA MÄNNISKAN LEVER ÄN (13:45 - 18:e Januari 2019, av Hetzz)
Wiki
Senaste ändringen:
3D (rev: 1, tid: 09:40 - 13:e November 2015)
Chatt
#blinkenlights @ Libera.Chat
Gratis shellkonton för IRC, webbsidor mm.