VB.NET 2005: Uložení textu do souboru pomocí SaveDialog   zodpovězená otázka

VB.NET

Ahoj,

jsem zatím spíš začátečník a při zkoušení jednoho prográmku jsem narazil na jednu chybku, kterou nejsem schopný svými silami odstranit; proto se obracím na zkušené programátory a doufám, že mi někdo poradí..

takže, oč jde..

vytvořil jsem prográmek, ve kterém mám proměnnou typu String;

tu bych chtěl pomocí SaveDialog uložit do souboru (konrétně jsem přiřadil filtr pro html, htm a txt soubory). Mno.. a zde je tedy ta část zdrojáku, kterým to všechno začlo:

sfdUloz.ShowDialog()

IO.File.CreateText(sfdUloz.FileName)

Dim sw As New IO.StreamWriter(sfdUloz.FileName)
sw.WriteLine(kod)
sw.Close()

nevím, kde je chyba: program se sice spustil, ale v té chvíli, kdy se vytvořil soubor a program se do něj chystal zapsat obsah stringové proměnné kod (funkčně nadeklarované předtím), tak mi to napsalo něco o tom, že soubor je již využíván jiným procesem, tj. následující chyba:

The process cannot access the file

'C:\soubor.html' because it is being used by another process.

Prosím, potřebuji poradit - jak nejjednodušeji vytvořit soubor

a zapsat do něj obsah proměnné kod ? Budu rád za každou odpověď. Děkuji.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

pokud Vám nebude vadit, že nejsem "zkušený programátor", tak Vám zkusím pomoci. Dle mého v daném útžku kódu dvakrát za sebou otevíráte tentýž soubor pro zápis, což tak trochu vyplývý z chybové hlášky.

Zkusil bych to proto upravit:

....
Dim sw As IO.StreamWriter = IO.File.CreateText(sfdUloz.FileName)

sw.Write(kod)
sw.Close()

myslím, že takto by to mohlo fungovat.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak jsem se ještě díval do dokumentace a aby to bylo zcela košér, mělo by to být ještě mírně upravené:

Using sw As IO.StreamWriter = IO.File.CreateText(sfdUloz.FileName)

   sw.Write(kod)
   sw.Close()
end using 

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Ještě podotýkám, že původní kód v prvním příspěvku měl následující chybu.

Nejdřív jste otevřel soubor pomocí metody CreateText a pak jste se jej pokusil znovu otevřít přes StreamWriter. A tady to zhavarovalo, protože soubor jste již měl vytvořen a otevřen.

Správné ukázky kódu máte ve druhém a třetím příspěvku, použití Using akorát zajistí to, že se objekt sw po dosažení příkazu End Using odstraní z paměti.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

jj, už chápu, v čom byla chybka..

děkuji za rady a správný kousek kódu

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback