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: 25

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);


-------------------------
/ Mvh netKen



martin310 15:18 - 22:a December 2009 | Post #2
Medlem
Inlägg: 234

Skicka PM
ID:et ska väl vara där 255200 är?

-------------------------
Hmm... Singnatur Hmmm...

Crazy Banana Collectors Game Studios - eller är det Game Studio???



Kekke 21:27 - 22:a December 2009 | Post #3
Medlem
Inlägg: 29

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: 234

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!

-------------------------
Hmm... Singnatur Hmmm...

Crazy Banana Collectors Game Studios - eller är det Game Studio???



netKen 19:05 - 3:e Januari 2010 | Post #5
Medlem
Inlägg: 25

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));
}



-------------------------
/ Mvh netKen

Senast redigerad 18:09 - 24:e Januari 2010


netKen 13:46 - 7:e Januari 2010 | Post #6
Medlem
Inlägg: 25

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.

-------------------------
/ Mvh netKen



netKen 19:28 - 9:e Januari 2010 | Post #7
Medlem
Inlägg: 25

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å?


-------------------------
/ Mvh netKen



martin310 19:35 - 9:e Januari 2010 | Post #8
Medlem
Inlägg: 234

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

-------------------------
Hmm... Singnatur Hmmm...

Crazy Banana Collectors Game Studios - eller är det Game Studio???



netKen 21:37 - 10:e Januari 2010 | Post #9
Medlem
Inlägg: 25

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);
}

-------------------------
/ Mvh netKen



martin310 19:09 - 11:a Januari 2010 | Post #10
Medlem
Inlägg: 234

Skicka PM
Ta bara namnet på den "C:\\" + sFile
Om det var det du mena?

-------------------------
Hmm... Singnatur Hmmm...

Crazy Banana Collectors Game Studios - eller är det Game Studio???



netKen 20:05 - 11:a Januari 2010 | Post #11
Medlem
Inlägg: 25

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

-------------------------
/ Mvh netKen



netKen 12:38 - 15:e Januari 2010 | Post #12
Medlem
Inlägg: 25

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?

-------------------------
/ Mvh netKen



martin310 14:10 - 15:e Januari 2010 | Post #13
Medlem
Inlägg: 234

Skicka PM
Använd socket och StremWriter!Smiley

-------------------------
Hmm... Singnatur Hmmm...

Crazy Banana Collectors Game Studios - eller är det Game Studio???



netKen 22:17 - 28:e Januari 2010 | Post #14
Medlem
Inlägg: 25

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!

-------------------------
/ Mvh netKen



Kekke 18:14 - 9:e Februari 2010 | Post #15
Medlem
Inlägg: 29

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: 25

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!

-------------------------
/ Mvh netKen



netKen 21:55 - 8:e April 2010 | Post #17
Medlem
Inlägg: 25

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

-------------------------
/ Mvh netKen



netKen 21:55 - 13:e April 2010 | Post #18
Medlem
Inlägg: 25

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:\Users\KMJ\Downloads\foldernamn\{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:\Users\KMJ\Downloads\foldernamn\{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;

}




}
}


-------------------------
/ Mvh netKen

Senast redigerad 13:09 - 31:a Juli 2010


netKen 19:40 - 21:a April 2010 | Post #19
Medlem
Inlägg: 25

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;
}
}

-------------------------
/ Mvh netKen

Senast redigerad 19:44 - 21:a April 2010


netKen 17:21 - 3:e Maj 2010 | Post #20
Medlem
Inlägg: 25

Skicka PM
lösning= @"\"
och ev. använda Combine.Path

-------------------------
/ Mvh netKen



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