Доброго времени суток,комрады и комрадки!!как всегда обращаюсь только к любимому комьюнити,ибо здесь все очень добры и много знают в кодинге)вот возникла очередная проблема,надеюсь,вы мне поможете!но сначала лирическое отступление….
примерно 2 года назад я пошел на программирование…эх,это было хорошее время,время,когда я не знал границ и рамок,я учил и учился,упорным трудом завоевывая все новые и новые знания….это был прекрасный период,и вот в один момент мне понадобилось нечто большее для программы….
Вот закончилось лирическое отступление.Вот в чем суть вопроса.В Вижуал Бейсике был такой оператор Write(в Visual Baisic 6.0) и WriteFile(в Visual Baisic 2008)-его суть заключалась в том,что грубо говоря,можно было запистаь значение любой переменной в файл,и потом его же прочитать при помощи оператора Read
например
WriteFile(1,Variable)
в файл под индексом 1(это такая особенность бейсика,там каждому открытому файлу надо повесить индекс типа short) записывается любая переменная стандартного типа(int,boolean,string)
потом командой Read можно было прочитать значение переменной и грубо говоря присвоить ей его
ReadFile(1,Variable)
у меня следующий вопрос по Шарпу-можно ли воплотить подобное в нем,если ли какие либо похожие операторы,если нету-то пажалуста,очень прошу,не могли бы вы продемонстрировать код,который выполнял бы похожее действие и немного его объяснить соотвественно!! буду очень признателен,так как вы всегда мне помогали-надеюсь,поможете и сейчас!огромное вам спасибо заранее!!
5 июля 2009 в 12:05
блин,народ..спасибо вам канеш большое,но это все не совсем то…..я уже описывал много раз,что я хочу,но вы не совсем меня поняли..вот вам код небольшой,который иллюстрирует то,что я хочу
staticvoidReadSettings()
{
IsolatedStorageFile StorageFile = IsolatedStorageFile.GetUserStoreForDomain();
IsolatedStorageFileStream StorageStream = new IsolatedStorageFileStream("Settings.xml", FileMode.Open, FileAccess.Read);
System.Xml.XmlTextReader Reader = new System.Xml.XmlTextReader(StorageStream);
while (Reader.Read())
{
switch (Reader.Name)
{
case "TestVariable":
int variable = int.Parse(Reader.ReadString());
Console.WriteLine(variable.ToString());
break;
}
}
StorageFile.Close();
StorageStream.Close();
}
static void WriteSettings()
{
IsolatedStorageFile StorageFile = IsolatedStorageFile.GetUserStoreForDomain();
IsolatedStorageFileStream StorageStream = new IsolatedStorageFileStream("Settings.xml", FileMode.Create, FileAccess.Write);
System.Xml.XmlTextWriter Writer = new System.Xml.XmlTextWriter(StorageStream, Encoding.UTF8);
Writer.Formatting = System.Xml.Formatting.Indented;
Writer.WriteStartDocument();
Writer.WriteStartElement("Settings");
Writer.WriteStartElement("TestVariable");
Writer.WriteValue(Program.Variable.ToString());
Writer.WriteEndElement();
Writer.WriteEndElement();
Writer.Flush();
Writer.Close();
StorageFile.Close();
StorageStream.Close();
}
5 июля 2009 в 11:03
Зачем создавать, можно просто пересоздавать.
Например
Stream f = new FileStream(@"input.txt", FileMode.Open, FileAccess.Read);
… // code
f = new FileStream(@"input2.txt", FileMode.Open, FileAccess.Read);
… // another code
Аналогично и с потоком для записи в файлы
5 июля 2009 в 10:04
Леонид maxleo Максимов
а можно ли подобное то сделать в Шарпе,как в Бейсике??
5 июля 2009 в 10:04
а то больно накладно для каждой переменной свой файл создавать….
5 июля 2009 в 9:02
можно короче писать:
string www = "Раз раз";
File.WriteAllText("1.txt", www);
Console.WriteLine("Читаем текст > ");
string rd = File.ReadAllText("1.txt");
Console.WriteLine(rd);
Console.ReadKey();
5 июля 2009 в 6:02
про VB6 – первым аргументом Write является не индекс файла, а его "номер открытого файла" (см FreeFile, Open). соответственно, любой идентификатор открытого файла (хендл, структура или объект) будет являться аналогом.
5 июля 2009 в 1:05
угу, с краскостью у меня иногда проблемы…забыл про метод Peek()
5 июля 2009 в 1:04
string str = "";
for (; ; )
{
str = reader.ReadLine();//read from input.txt
if (str != null)
{
Console.WriteLine(str);
writer.WriteLine(str);//write in output.txt
writer.Flush();
}
else
break;
}
вот это как-то настораживает..
на c# никогда не писал, но подозреваю что это можно превратить в
while (reader.Peek() >= 0)
{
str = reader.ReadLine();
Console.WriteLine(str);
writer.WriteLine(str);
}
5 июля 2009 в 1:03
ок,я перепишу код и буду разбираться над каждой строчкой))спасибо большое,удивляюсь,как это я сам не додумался тупо до построчного считывания))
5 июля 2009 в 1:03
канеш не совсем то,что я хотел,но тоже сойдет для начала)
5 июля 2009 в 1:00
мой кривоватый учебный пример выглядит так:
[code]
using System;
using System.IO;
class Test_System_IO
{
public static void Main()
{
Stream f = new FileStream(@"input.txt", FileMode.Open, FileAccess.Read);
StreamReader reader = new StreamReader(f);
StreamWriter writer = new StreamWriter(@"output.txt");//here too
string str = "";
for (; ; )
{
str = reader.ReadLine();//read from input.txt
if (str != null)
{
Console.WriteLine(str);
writer.WriteLine(str);//write in output.txt
writer.Flush();
}
else
break;
}
Console.Read();
reader.Close();
writer.Close();
}
}
[/code]
файлы input.txt и output.txt должны находиться в файле со сборкой программы…
5 июля 2009 в 1:00
можно и подругому ессно…в .NET многое можно несколькими способами сделать
5 июля 2009 в 0:03
хорошо,спасибо вам за помощь…но я хотел бы увидеть именно пример того,чего я хочу или же пример какого нить кода,который бы аналогично бы действовал-то есть берем значение переменной,записываем в файл(или кучу переменных),допустим закрываем программу,а потом просто считываем значения переменных из файла,когда это необходимо при мледюущем запуске программы или при вызове метода
5 июля 2009 в 0:02
System.IO, в этом пространстве классы для работы с потоками, в том числе для работы с файлом…
насчёт того чтобы присвоить индекс не скажу точно, я не встречелся…
да и нужны они, так и так супер всё логично
примеры кода нужны?
5 июля 2009 в 0:02
ещё такая просьба…есть тема "конкретные вопросы по C#", лучше там задавать вопросы спасибо за понимание