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

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

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2012, 16:49   #1
santaXZ
Пользователь
 
Аватар для santaXZ
 
Регистрация: 22.02.2012
Сообщений: 23
Печаль Реализация streamreader через web и считывание txt

Здравствуйте, на днях решил написать апдейтер но столкнулся с проблемой когда работа была почти завершена.
Проблема заключается в этом коде:

Код:
        private void textBox1_TextChanged(object sender, EventArgs e)
        {

            try
            {
            StreamReader reader = new StreamReader(WebRequest.Create("localhost/news.txt").GetResponse().GetResponseStream());
            textBox1.Text = reader.ReadLine();
            reader.Close();
            }
            catch (Exception)
            {
                MessageBox.Show("Текст сообщения.", "Ошибка");
            }
        }
Мне нужно чтобы в textBox1 отображался весь текст из txt файла как есть и даже если текст есть ниже, а не в одну строку.
Сейчас по этому коду, текст берется с файла txt который лежит на localhost и выводится в textBox1 но слитно в одну строку что мне не нужно.
В интернете смотрел, но решения подходящего не нашел.
santaXZ вне форума Ответить с цитированием
Старый 11.05.2012, 18:09   #2
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию

а почему бы не использовать File.ReadAllText ?
Код:
using system.IO;
textBox1.Text= File.ReadAllText(path, Encoding.UTF8);
ну или раз именно StreamReader хочется то почему бы вместо ReadLine не сделать ReadToEnd() ?

Последний раз редактировалось wm_leviathan; 11.05.2012 в 18:14.
wm_leviathan вне форума Ответить с цитированием
Старый 11.05.2012, 20:09   #3
santaXZ
Пользователь
 
Аватар для santaXZ
 
Регистрация: 22.02.2012
Сообщений: 23
По умолчанию

Цитата:
Сообщение от wm_leviathan Посмотреть сообщение
а почему бы не использовать File.ReadAllText ?
Код:
using system.IO;
textBox1.Text= File.ReadAllText(path, Encoding.UTF8);
ну или раз именно StreamReader хочется то почему бы вместо ReadLine не сделать ReadToEnd() ?
Я уже пробовал так сделать, но мне нужно самое главное чтобы файл news.txt был на хостинге и чтобы текст что выводится в textBox1 выводился не в одну строку.

Попробовал немного по другому сделать:
Код:
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
        
            try
            {
            WebClient client = new WebClient();

            Stream data = client.OpenRead("localhost/news.txt");
            StreamReader reader = new StreamReader(data);
            textBox1.Text = reader.ReadToEnd();
            data.Close();
            reader.Close();
            }
            catch (Exception)
            {
                MessageBox.Show("Текст сообщения.", "Ошибка");
            }
        }
Но так же текст слипается в textBox1 в одну строку, хотя он считывается с файла News.txt с localhost.

Вот так сейчас выводит:


Хотя должен выводить в точности как в News.txt в textBox1 перенося строки:

Последний раз редактировалось Stilet; 11.05.2012 в 21:01.
santaXZ вне форума Ответить с цитированием
Старый 11.05.2012, 21:46   #4
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию

Цитата:
Я уже пробовал так сделать, но мне нужно самое главное чтобы файл news.txt был на хостинге и чтобы текст что выводится в textBox1 выводился не в одну строку.
сделай проверку на наличие файла. если есть то считать если нет то ошибку вывести. лично я проверял у себя
Код:
textBox1.Text= File.ReadAllText(path, Encoding.UTF8);
вполне нормально все считывает и показывает скрин ниже
http://s1.ipicture.ru/uploads/20120511/3HsRq2fW.gif
может быть не стоит
Код:
textBox1.Multiline = true;
???

Последний раз редактировалось wm_leviathan; 11.05.2012 в 21:54.
wm_leviathan вне форума Ответить с цитированием
Старый 11.05.2012, 22:20   #5
pcacer
Пользователь
 
Регистрация: 08.04.2012
Сообщений: 11
По умолчанию

Попробуй этот цикл
for (int i = 0; i < s.Length; i++)
{
if (s[i] == ' ')
{
s1 += " ";
continue;
}
if (s[i] == '\n')
{
s1 += "\n";//s1 это то что выводим
continue;
}
pcacer вне форума Ответить с цитированием
Старый 11.05.2012, 23:10   #6
santaXZ
Пользователь
 
Аватар для santaXZ
 
Регистрация: 22.02.2012
Сообщений: 23
По умолчанию

Цитата:
Сообщение от wm_leviathan Посмотреть сообщение
сделай проверку на наличие файла. если есть то считать если нет то ошибку вывести. лично я проверял у себя
Код:
textBox1.Text= File.ReadAllText(path, Encoding.UTF8);
вполне нормально все считывает и показывает скрин ниже
http://s1.ipicture.ru/uploads/20120511/3HsRq2fW.gif
может быть не стоит
Код:
textBox1.Multiline = true;
???
Попробую может быть и правда свойство у textBox1 стоит убрать.
Если будет можно, могу я увидеть тот кусочек кода как ты сделал? буду благодарен просто раньше был на С++ потом перешел на С# первое время не привычно.

Цитата:
Сообщение от pcacer Посмотреть сообщение
Попробуй этот цикл
for (int i = 0; i < s.Length; i++)
{
if (s[i] == ' ')
{
s1 += " ";
continue;
}
if (s[i] == '\n')
{
s1 += "\n";//s1 это то что выводим
continue;
}
Попробую этот вариант, но там дело скорее не в циклах.

Последний раз редактировалось santaXZ; 11.05.2012 в 23:40.
santaXZ вне форума Ответить с цитированием
Старый 11.05.2012, 23:39   #7
muradov
Пользователь
 
Регистрация: 05.05.2012
Сообщений: 39
По умолчанию

StreamReader реализует IDisposable. Используй
Код:
using(var sr = new StreamReader(...))
{
...
}
И Close() при этом не нужен.
muradov вне форума Ответить с цитированием
Старый 12.05.2012, 09:49   #8
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию

button1 - реализация через streamReader, button2 - реализация через File.ReadAllLine
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            textBox1.Multiline = true;
            textBox1.Width = 767; //задаем размер текстбокса 
            textBox1.Height = 617; //иначе он так и будет в одну строку
            textBox1.ScrollBars = ScrollBars.Vertical;
            string path = @"c:\temp\Text.txt";
            if (File.Exists(path))
            {
                using (StreamReader sr = new StreamReader(path))
                {
                    textBox1.Text = (sr.ReadToEnd());
                }
            }
            else
            {
                MessageBox.Show("Файл не существует.");
            }


        }

        private void button2_Click(object sender, EventArgs e)
        {
            textBox1.Multiline = true;
            textBox1.Width = 767; //задаем размер текстбокса 
            textBox1.Height = 617; //иначе он так и будет в одну строку
            textBox1.ScrollBars = ScrollBars.Vertical;
            string path = @"c:\temp\Text.txt";
            if (File.Exists(path))
            {
                textBox1.Text = File.ReadAllText(path);                            
            }
            else
            {
                MessageBox.Show("Файл не существует.");
            }
            
            
        }
    }
}
код взят из MSDN

Ссылка на сам проект
wm_leviathan вне форума Ответить с цитированием
Старый 12.05.2012, 10:38   #9
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию

может быть дело не readToEnd или readAllText, может после строки
Код:
StreamReader reader = new StreamReader(WebRequest.Create("localhost/news.txt").GetResponse().GetResponseStream());
В reader попадает текст в таком "слипшемся" виде ? тогда надо разбираться с GetResponse

Последний раз редактировалось wm_leviathan; 12.05.2012 в 10:47.
wm_leviathan вне форума Ответить с цитированием
Старый 12.05.2012, 12:24   #10
santaXZ
Пользователь
 
Аватар для santaXZ
 
Регистрация: 22.02.2012
Сообщений: 23
По умолчанию

Спасибо всем за примеры и решения, попробую сделать.
Возможно стоит посмотреть что сделать с GetResponce.
santaXZ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Считывание смс с мобильного телефона через USB enernet Общие вопросы Delphi 1 12.03.2012 13:32
Реализация программ типа AM-DeadLink, Web Link Validator (чекеры ссылок) Upgrades Работа с сетью в Delphi 2 10.10.2011 11:18
С++ Считывание чисел из файла с расширением .txt Gared Помощь студентам 2 18.09.2011 16:11
аналог StreamReader, без буферизации. Пепел Феникса C# (си шарп) 18 10.03.2011 10:59
Считывание с web страницы в java TriV Помощь студентам 0 07.02.2010 20:28