Ahoj, nevite jakym nejjednodussim zpusobem lze v c# ukladat a opet nacitat obsah promennych na a z disku(souboru)? Potrebuji ukladat a nacitat konfiguracni data - je to jen par int promenych?
Predem Diky
Fórum › .NET
Ukladani promenych na disk
To cybernick :
odporúčam Config.ini ....ináč...
Texťák,šifrovaná databáze,dátové soubory,temporary,cookies =D...NA HDD uložíš všetko...
To Mega.Lama : S prominutím, zbláznil ses? .ini soubory jsou v .NET "podporovány" jen tak tak, aby se dodržela jakás takás zpětná kompatibilita (a té kompatibility je dosaženo tak, že importuješ Kernel32.dll). Z pohledu .NET jsou ale .ini soubory zastaralé!
Pro .NET jsou .config soubory se kterými se pracuje pomocí namespace System.Configuration. Zkus googlovat tohle a uvidíš, že se ti to hned povede:-) .ini skutečně ne.
To Chrasty :
...počítaj s tým že aj *.txt je vhodný...záleži od toho aký typ dôvených informácií tam chceš mať...
.config neviem...ešte som nepozeral do toho súboru ale niekedy sa doň mrknem...
To Mega.Lama : Když už uvádíš .ini, tak jen říkám, že jeho použití v .NET je naprosto nevhodné, .config uvádím jako jeho nástupce. No jo, .txt, ale pro ukládání nastavení aplikace... v .NET je i tak .config nejvhodnější, nejpohodlněji se s ním pracuje, díky System.Configuration.
To Mega.Lama : Proč by to dělal? Vždyť vůbec nenapsal, že chce mermomocí použít .ini
Windows sice jo, ale .NETu co se .config píše to fakt jedno není. Doporučuju si o tom něco přečíst.
Nebo muzes pouzit XML pro ukladani, popripade binarni format nebo serializaci.
To Chrasty : Nic proti, ale pro někoho, kdo tenhle Namespace slyší poprvý je dost těžký se v něm pořádně vyznat. Nejjednodušší způsob je asi fakt uložit to do obyč. txt souboru (ať už má příponu, jakou chce) a ve formě pole to načíst a s tim už si pak dělat co je potřeba. Neřikám, že to je podle nejnovějších trendů, ale funguje to :)
To Pebble : Ono to zas tak těžké není. Tady je imho celkem srozumitelný návod: http://www.developer.com/net/net/article.php/3396111
To z_moravec : Ano, návod je v pohodě, předpokládá ovšem znalost XML, což je asi sice v dnešní době normální, ale pokud někdo začíná s .NETem jako s něčim úplně novym (já sem na něj přešel před půl rokem z FoxPro a nestačm se divit ani orientovat), je XML další poměrně obsáhlej balík k nastudování. Další věc je v tom, že .Net je prostě tak obsáhlej, že ho jeden člověk prostě neprozkoumá celej (pokud se tim neživí, a mnohdy ani tehdy ne) - já např. slyšel o config souborech a že se to dá dělat i takhle poprvé až od Chrastyho, kterej mi tímto zase (jako již několikrát) rozšířil obzory (za což mu díky). V prográmcích, co si dělám, to dělám tak, jak sem to popsal, protože to byla prostě jednoduchá a i jediná alternativa, kterou sem znal (přečet sem o C# asi 5 učebnic - od Wroxu po Microsoft Press a o tomhle sem tam nenašel nic).
To Pebble : Pochopil jsem, že zatím nemá zkušenosti ani s ini, txt, atd. ani s .config, takže si myslím, že nejlepší je zvolit .config, protože je reálná naděje, že s tím vystačí hodně dlouhou dobu. To se o ini nedá říct (aspoň doufám :-)).
Právě jsem stejně jako z_moravec vycházel z toho, že autor dotazu nemá zkušenosti s vůbec žádným způsobem ukládání nastavení a do budoucna se mi zdá .config jako nejlepší řešení.
To Pebble : Myslím, že jsem se o .config dozvěděl poprvé z knihy Pro C# and the .NET Platform, jinak v ostatních co jsem četl o tom taky zmínka nebyla...aspoň pokud se dobře pamatuju :-)
To Chrasty :
ja si myslím že normálny textový súbor by mu na začiatok rozhodne pomohol,a nie zaťažovať ho ešte aj s XML,to mu len pridávate prácu...
Já si zase myslím, že kdyby už uměl použít StreamReader/Writer a podobné věci na práci s obyč soubory, už by to tak udělal a asi by se neptal. Takže v tomhle směru jde od nuly tak jako tak, takže proč mu rovnou neporadit postup, který se používá i u "velkých" aplikací? Navíc mi přijde použití System.Configuration za tímhle účelem naprosto luxusně pohodlné. Jen specifikuješ ID toho elementu a ono ti to vrátí jeho hodnotu/nastavení. Žádná práce s načítáním stringů z .txt, parsováním a tak..
No je pravda, ze moc zkusenosti s ukladanim nemam, i kdyz jsem se se soubory a praci s nimi trochu setkal. Ale prislo mi takove nesikovne ukladat konfiguracni nastaveni do obycejneho textaku a zpracovavat to pres retezec. A studovat XML kvuli ulozeni 4 promenych nekam na disk mi zase prijde pro tento ucel zbytecne. Jasne ze kdyz by byl nekde jednoduchej postup tak by to taky slo. V Jave jsem nemel problem najit a ukladat objekty na disk, tady v C# jsem prave nic sikovneho najit nemohl... Kazdopadne diky za tipy, snad to rychle rozlousknu.
To cybernick : Na práci s .config znalost XML nepotřebuješ, vůbec. Ukázka:
Zápis hodnoty:
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings["mojeCislo"].Value = "3";
config.Save(ConfigurationSaveMode.Modified);
Načtení hodnoty:
string value = ConfigurationManager.AppSettings["mojeCislo"];
Zde přítomní spekulanti o vhodnosti a jednoduchosti tohoto postupu musí snad uznat, že je to nádhera. Vezmeš libovolný string (v tomto případě číslo 3), dáš mu libovolné jméno (v tomto případě mojeCislo), celý soubor uložíš a nastavení je uloženo. Při načítání stačí jen jediný řádek kódu, ve kterém se odkážeš na jméno té a té položky, třeba mojeCislo.
EDIT: Kdyžtak se mrkni na MSDN na přetížené verze těch metod, od každé je jich pár a umí pár zajímavých věcí.
Taky o tomhle configure slysim poprve a je to pekna vec.Jak je zmineno vyse,na ulozeni 4 promennych je xml fakt zbytecny a slozity,ale i kdyz XmlSerializerem to neni zadna veda.Relativne pekny prikladek:
http://www.switchonthecode.com/tutorials/csharp-tutorial-xml-serialization
BTW: K xml hodnotam se da taky pristupovat zpusobem stejnym,jako u Configuration.
XmlDocument_promenna.DocumentElement["prvek_nebo_idx"]
To jen tak na okraj pro pozdejsi pouziti, kdyby mel zajem :)
To Chrasty :
Diky, presne tohle mi dost pomohlo. Uz ukladam bez problemu, ale neslo to takhle lehce. Musel jsem nejdrive vytvorit samotny config soubor se stejnym jmenem jako spousteny projekt a do nej vlozit:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="mojeCislo"/>
</appSettings>
</configuration>
a ukladat pres
config.Save("nazev toho config souboru", ConfigurationSaveMode.Modified);
Bez vytvoreneho config souboru to vyhazovalo vyjimku a ukladani bez nazvu souboru take neslo, ale takhle to beha.
Jeste je mozne pouzit "klikacku" - ktera ve finale vytvori .config file, ale neni treba to programovat. Pro pokrocileho je lepsi postup vyse uvedeny, zacatecnik (nebo milovnik klikatek) si to muze naklikat a prozkoumat, co ze mu to Studio vytovrilo..
Ve vlastnostech projektu si vytvorim "settings" a do nich pridam sve hodnoty a nejak je pojmenuji. Visual Studio pak vygeneruje tridu, K jejiz instanci lze za behu pristupovat pres statickou promennou. Tato instance nam poskytuje zadane hodnoty pres property (vlastnosti), je schopna je menit a provadet Save a Reload. Hodnoty v "settings" je mozne navazat na Form i primo v designeru.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Ukládání dat na disk — založil sh00ter
Posílání proměných — založil Ruda
Více proměných — založil Hranicarrr
C# - předání proměných — založil petrl
Vytváření proměných cyklem FOR — založil pidgin
Moderátoři diskuze