ale má to podmínku, pokud ten soubor na začátku spuštění souboru
teprve vytvořím až do ukončení do něj nelze zapisovat, zapisovat do něj
mohu až při příštím spuštění programu, pokud někdo víte v čem je
háček, byl bych vděčný za případnou odpověď
Adresář s aplikací by měl být systémem chráněn proti zápisu, aby do
něj nemohly viry. Proto by takový zápis ani neměl být možný. Data mají
být v uživatelském adresáři, nejlépe v databázi. Nebo také v databázi
mimo uživatelský adresář a mimo adresář s aplikací.
Tvá otázka mi nedává logiku. Jsem pro používání databází a jsem
proti zápisu do adresáře, ve kterém je aplikace.
Jak by mohlo dojít ke kolizi? Soubor bude ve složce uživatele, jedině,
že by spustil program vícekrát, ale to je také jedno, prostě by tam
zůstalo nastavení poslední instance. Takhle to mají přeci všechny
programy. DB je pro tyto účely zbytečně složitá.
Mám už takovou zkušenost. Jak se nějaký program rozšíří, hned ho
někdo vrzne na serverový disk. A průšvih je na světě. Pokud je ten
adresář chráněn proti zápisu, přestane to fungovat.
Pokud chceš zapisovat do konfiguráku aplikace, tak ten konfigurák musí
být v uživatelském prostoru, aby se do něj dalo zapsat.
INI je také DB, ale pro práci s ním se musí použít DB vrstva, která je
docela tenká. Jinak se jako DB nechová.
Kouknul jsem na to, ale nic co by vysvětlovalo můj problém
code:
privatevoid CheckFileExist()
{
if (!File.Exists(Extensions.GetAppDir + "\\Settings.ini"))
{
File.Create(Extensions.GetAppDir + "\\Settings.ini");
File.WriteAllLines(Extensions.GetAppDir + "\\Settings.ini", defaultSettings);
//V tom File.WriteAllLines mi to při spuštění funkce napíše že do souboru nelze zapisovat
}
}
using (StreamWriter sr = new StreamWriter(new FileStream(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\jméno souboru", FileMode.Create)))
sr.WriteLine(blabla);
Ten tvůj přístup je také špatně. Data se mají na disk zapsat už v
okamžiku, kdy vzniknou, aby se nemuselo řešit např. ukládání po 10
minutách. Daleko jednodušší je zapisovat průběžně. Také je to mnohem
spolehlivější a je možné, aby takto komunikovalo více procesů mezi
sebou.
Někdy stačí dát zápis jen na OK tlačítko nějakého dialogu s
nastavením. Pokud je aplikace jednoduchá, tak i na to ukončení, pořád
vítězí že volání uložení je jen jednou nad tím, že program může
něco málo zapomenout.
Pokud je aplikace složitá a nastavení je hodně, zpravidla použijeme
databinding a databázi (to jsi měl asi na mysli), ale to předimenzováváme
původní dotaz v tomto vláknu.
Zkoušel jsem to přepsat na ten StreamWriter, ale soubor mi to
nezpřístupnilo, ten StreamWriter nic nezapsal a při ukončování, a zápisu
současného nastavení mi to hlásilo že do souboru nelze zapisovat.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.