Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2010, 01:07   #1
OnlySergio
Пользователь
 
Регистрация: 05.10.2009
Сообщений: 12
Подмигивание Проблема с StreamWriter

Задача состоит вот в чем. У нас есть например класс книга. У него есть некоторые поля и с помощью StreamWriter мы заносим эти данные в блокнот, только я хочу сделать так чтобы составлялась как бы база данных. С моим кодом книга вносится в файл , но при внесении следующей она просто заменяется.Помогите товарищи
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ConsoleApplication7
{
    class Program
    {
        static void Main(string[] args)
        {
            Book book = new Book();
            book.AddBook();
            book.Add();
            book.SaveBook();
            
         //   book.SaveItemToFile();
        }
    class Book 
    {
        public string name;
        public string author;
        public int year;

        public void AddBook()
        {
            string read;      
            Console.WriteLine("Введите имя книги");
            name = Console.ReadLine();
            
            Console.WriteLine("Введите автора книги");
            author = Console.ReadLine();

            Console.WriteLine("Введите год издания");
            read = Console.ReadLine();
            year = Convert.ToInt32(read);
        }
        
        public void Add(){
            using (StreamWriter streamwriter = new StreamWriter("output.base"))
            {
                streamwriter.WriteLine(name);
                streamwriter.WriteLine(author);
                streamwriter.WriteLine(year);
            }
            Console.WriteLine("Книга успешно добавлена!");
        }
        public void  SaveBook() 
        {
            string[] book = new string[3];
            book[0] = name;
            book[1] = author;
            book[2] = year.ToString();
        }
        public void SaveItemToFile(StreamWriter writer) 
        {
            writer.WriteLine(name);
            writer.WriteLine(author);
            writer.WriteLine(year);
        }
       
    }   
      }
    }
OnlySergio вне форума Ответить с цитированием
Старый 18.03.2010, 08:45   #2
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Я бы написал нечто вроде этого,извини,пишу по памяти,могут быть недочеты.
Код:
public void Add(){
	    FileStream fin=new FileStream("output.base",FileMode.Append);
            using (StreamWriter streamwriter = new StreamWriter(fin))
            {
                streamwriter.WriteLine(name);
                streamwriter.WriteLine(author);
                streamwriter.WriteLine(year);
            }
            Console.WriteLine("Книга успешно добавлена!");
	    streamwriter.Close();
        }
З.Ы. Еще такой вариант. Есть два конструктора
1)StreamWriter(string filename);
2)STreamWriter(string filename,bool flag);
Ты используешь первый.Если использовать второй,то flag==true,то вводимые в файл значения записываются в конец файла.Значит можно написать так:
Код:
 public void Add(){
            using (StreamWriter streamwriter = new StreamWriter("output.base",true))
            {
                streamwriter.WriteLine(name);
                streamwriter.WriteLine(author);
                streamwriter.WriteLine(year);
            }
            Console.WriteLine("Книга успешно добавлена!");
        }
Не давай организму поблажки, каждый день тренируй его в шашки..

Последний раз редактировалось Скарам; 18.03.2010 в 08:52.
Скарам вне форума Ответить с цитированием
Старый 18.03.2010, 09:11   #3
OnlySergio
Пользователь
 
Регистрация: 05.10.2009
Сообщений: 12
По умолчанию

да чувак работает спс =) да только как сделать пробел в базе между каждой книжкой?
Код:
 using (StreamWriter streamwriter = new StreamWriter(fin))
            {
                streamwriter.WriteLine(name);
                streamwriter.WriteLine(author);
                streamwriter.WriteLine(year);
                streamwriter.WriteLine(" ");
                Console.WriteLine("Книга успешно добавлена!");
                streamwriter.Close();
            }

Последний раз редактировалось OnlySergio; 18.03.2010 в 09:15.
OnlySergio вне форума Ответить с цитированием
Старый 18.03.2010, 09:26   #4
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Вообще должно хватить streamwriter.WriteLine(" ");
Если не хватает,то попробуй вместо
Код:
 streamwriter.WriteLine(" ");
написать
Код:
 streamwriter.Write("\n\r ");
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 18.03.2010, 09:32   #5
OnlySergio
Пользователь
 
Регистрация: 05.10.2009
Сообщений: 12
По умолчанию

да хватило но и за совет спс
OnlySergio вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с рамами/Проблема с ЖД DRAGGER Компьютерное железо 6 04.01.2009 23:37