Forum: string object inuti For Loop C#

Forum huvudsida -> Programmering -> string object inuti For Loop C#

Sidor: 1

Till botten

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:
for (int i = 255200; i < 256200; i++)
{
string sFile = "http://www.somedomain.com/../../XMLmatchID=" + i.ToString();
}


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.Smiley

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 Smiley




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!Smiley

-------------------------

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 Smiley


sen att det kanske ser för jävligt ut är en annan sak...det funkar iaf.

int LoopStart;
int LoopStopp;

LoopStart = int.Parse(TBLoopStart.Text);
LoopStopp = int.Parse(TBLoopStopp.Text);

//förkortningar
string p1 = @"\";
string p2 = textBoxsparatill.Text;
string p3 = comboBoxFilnamn.Text;
string p4 = comboBoxFormat.Text;
string p5 = textBoxUrl.Text;
string p6 = CBEnds.Text;

//rensar ListWiev
listView1.Items.Clear();

//For Loop
for (int i = LoopStart; i < LoopStopp; i++)
{
string sFiles = string.Format(p5 + "{0}", +i);
listView1.Items.Add(new ListViewItem(p1 + p3 + i + p4 + p6));

{

HttpWebRequest request = null;
HttpWebResponse response = null;
WebClient wc = new WebClient();

// The stopwatch which we will be using to calculate the download speed

sw.Start();


string ret = "";


try
{

request = (HttpWebRequest)WebRequest.Create(sFiles.Trim());
request.Method = "GET";
//request.Method = "HEAD";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentType = "Content-Length".Length.ToString();

request.Timeout = 15000;
response = (HttpWebResponse)request.GetResponse();
long len = response.ContentLength ;
ret = new StreamReader(response.GetResponseStream(),
Encoding.Default).ReadToEnd();


//storleken på filer som hämtas
for (int x = 0; x < listView1.Items.Count; x++)
{
int ii = 1;
listView1.Items[x].SubItems.Add(len.ToString("") + " bytes");
ii++;
}

wc.DownloadProgressChanged += new DownloadProgressChangedEventHandler(wc_DownloadProgressChanged);
wc.DownloadFileAsync(new Uri(sFiles.Trim()), String.Format(p2 + p1 + (p3) + i + (p4 + p6), Path.GetExtension(sFiles)));
wc.DownloadFileCompleted += new System.ComponentModel.AsyncCompletedEventHandler(wc_DownloadFileCompleted);

response.Close();

}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}


finally
{
if (response != null)
{
response.Close();

}

}

}
}
}

//Visar text när filer har laddats ner
private void wc_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{

btnOpenDownloadedFolder.Visible = true;
labelNedladdningsmapp.Visible = true;
label1.Visible = true;
btnDelete.Visible = true;
labelDownloaded.Visible = true;


if (checkBoxcloseProgram.Checked)
{
Application.Exit();
}
}

private void wc_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{

sw.Start();
//labelSpeed.Text = string.Format("{0} kb/s", (e.BytesReceived / 1024d / sw.Elapsed.TotalSeconds).ToString("0.00"));
// Update the progressbar percentage only when the value is not the same.
progressBar.Value = e.ProgressPercentage;
// Show the percentage on our label.
labelPerc.Text = e.ProgressPercentage.ToString() + "%";
// Update the label with how much data have been downloaded so far and the total size of the file we are currently downloading
//labelDownloaded.Text = string.Format("{0} MB's / {1} MB's",
(e.BytesReceived / 1024d / 1024d).ToString("0.00");
(e.TotalBytesToReceive / 1024d / 1024d).ToString("0.00");


//this.labelSpeed.Visible = false;
this.labelPerc.Visible = true;
btnOpenDownloadedFolder.Visible = false;
labelNedladdningsmapp.Visible = false;

}


//Välj mapp att spara filer i
private void buttonBladddra_Click(object sender, EventArgs e)
{
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{

textBoxsparatill.Text = folderBrowserDialog1.SelectedPath;

}
}






Sidor: 1

Forum huvudsida -> Programmering -> string object inuti For Loop C#
Atom feed

Du får inte posta i den här tråden | Till toppen