problem z tworzeniem pliku .html

problem z tworzeniem pliku .html
MJ
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:34
0

A wiec tak , kod troche nie ladny ale w czym problem , program ma pobierac z pliku tekstowego odnosniki do zdjec i zapisywac je w formie nowej strony html , wszystko dziala jak nalezy , plik sie tworzy itp jednak zeby zdjecia byly wyswietlane w przegladarce musze otworzyc plik w notatniku i na nowo zapisac jak html
tutaj kod:

Kopiuj
private void button1_Click(object sender, EventArgs e)
        {

            FileStream fs1 ;
            StreamReader sw2;
            fs1 = new FileStream("e:\\sciezka_zdjec.txt",FileMode.Open);
            sw2 = new StreamReader(fs1);
            
           

            string url_zdj = sw2.ReadToEnd();
            string sciezka = null;
            string calosc = null;
                 

                 
        
            
                sw2.Close();

                string calosc2 = null;
            FileStream start;
            start = new FileStream("c:\\www\\" + textBox1.Text + ".html",FileMode.OpenOrCreate);
            StreamWriter startsw = new StreamWriter(start);
            char cs = Convert.ToChar('"');
            for (int i = 0; url_zdj.Length > i; i++)
            {

                
                char a = Convert.ToChar(url_zdj[i]);
                
                if (a == 42)
                {
                    calosc2 = calosc2 + Environment.NewLine+ calosc;
                    sciezka = null;
                    calosc = null;
                }
                else
                {
                    sciezka =sciezka + Convert.ToString(a);
                }
                
                calosc = "<img src=" + cs + sciezka  + cs + " />";

                
                
            }
            calosc2 = "<html>"+Environment.NewLine+"<body>"+Environment.NewLine + calosc2 + Environment.NewLine + "</body>"+Environment.NewLine+"</html>";

                
            startsw.WriteLine(calosc2);

            
            startsw.Close();

this.Close();
        } 
ŁF
Moderator
  • Rejestracja:ponad 22 lata
  • Ostatnio:6 dni
0

jak wygląda plik na wejściu?


0

Twój kod zawiera wiele, według mnie, nadmiarowych linii.

Konsolowy program...

Kopiuj
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            string inputPath = @"urls.txt";
            string outputPath = @"test.html";

            string[] urls = File.ReadAllLines(inputPath);

            StreamWriter writer = new StreamWriter(outputPath);

            writer.WriteLine("<html>");
            
            foreach (string line in urls)
                writer.WriteLine( String.Format("<img src=\"{0}\" />", line )); 
            
            writer.WriteLine("</html>");

            writer.Close();

            System.Diagnostics.Process.Start(outputPath); // Uruchamiam utworzony plik
        }
    }
}

... i przykładowy plik z jakimiś losowymi obrazkami z internetu.

Kopiuj
http://i45.tinypic.com/bebzvb.jpg
http://i46.tinypic.com/swbmu1.jpg
Q4
  • Rejestracja:około 12 lat
  • Ostatnio:ponad 11 lat
  • Postów:103
0

HtmlAgilityPack - podziękować możesz później.

ŁF
o tak, użyj czołgu do pojechania na zakupy na targ pod domem
ŁF
Moderator
  • Rejestracja:ponad 22 lata
  • Ostatnio:6 dni
1
Kopiuj
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var images = System.IO.File.ReadAllLines("input.txt");
            var output = new StringBuilder("<html><body>");
            foreach (var image in images)
                output.AppendFormat("<img src=\"{0}\"/>\r\n", image);
            output.Append("</body></html>");

            System.IO.File.WriteAllText("output.html", output.ToString());
        }
    }
}

Q4
Teraz zmodyfkuj w łatwy i szybki sposób stronę (bez idiotycznego parsowania tekstu). Sugestia użycia biblioteki bierze się z fundamentalnych zasad programowania obiektowego. Co do tego czołgu, dlaczego nie? Ja tam chętnie bym się przejechał... :D
Q4
Żeby nie było, żem taki na nie... sposób ŁF też jest oczywiście dobry. Mnie chodziło o jakieś ewentualne przyszłościowe zastosowania programu. Bibliotekę zasugerowałem bo pisałem już program do automatycznego generowania stron o wyznaczonej treści i ta biblioteka sprawiła się rewelacyjnie.
ŁF
Też z niej korzystałem, ale jest to wielki kombajn, a ja jestem zwolennikiem rozwiązań adekwatnych do problemu. Jeśli autor wątku ma problem z tak ewidentnie łatwą rzeczą, to pomyśl jak sobie poradzi z tą biblioteką. A dodanie większej ilości rzeczy będzie do pewnego momentu łatwiejsze, niż w htmlagilitypack - ze względu na zwięzłość i prostotę powyższego kodu. Natomiast co ma korzystanie z bibliotek do programowania obiektowego to już nie mam pojęcia.
MJ
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:34
0

wiem ze prasowanie tekstu jest idiotyczne , lecz niewiem dokonca jak dzialaja te biblioteki .
to co ty napisales da ten sam efekt co w moim programie specjalnie wykombinowany kod zwracajacy linijka po linijce zawartosc pliku tekstowego?

mam jeszcze jedno pytanie , majac sciezke pliku jak przekopiowac go w inne miejsce , niech nazwa bedzie ta sama , bo

Kopiuj
 File.Copy("sciezka pobrana z pliku txt","sciezka gdzie ma isc"

nie dziala , program musi wczesniej utwozyc w danym miejscu plik o danej nazwie czy jak?

Q4
Nie działa prawdopowobnie przez to, że jako ścieżkę gdzie ma iść podajesz np. C:\Users\m\Desktop\ ,a powinieneś C:\Users\m\Desktop\pliczek.txt. Jeżeli podajesz tym drugim sposobem to możliwe, że jest jakiś błąd z uprawnieniami. otocz to sobie w try catch i sprawdź wiadomość wyjątku.
ŁF
czytaj treści błęów/wyjątków i używaj google, to się dowiesz samodzielnie.
MJ
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:34
0

jeszcze male pytanko co dodac do File.Copy aby w wypadku napotkania tego samego pliku , o takiej samej nazwie po prostu je zamienilo?

pochopny post , file.exists rozwiazalo sprawe

edytowany 1x, ostatnio: mjhallll
ŁF
Moderator
  • Rejestracja:ponad 22 lata
  • Ostatnio:6 dni
1

Masz Intellisense. Wystarczy nacisnąć ctrl+spacja albo Shift+ctrl+spacja i masz listę wszystkich pól, właściwości, metod itp oraz listę argumentów. File.Copy(shift+ctrl+spacja i widzisz, że metoda ma dwa overloady, sprawdzasz pierwszy, nic ciekawego, sprawdzasz drugi (strzałka do dołu) i widzisz parametr... overwrite! Tak! File.Copy(source, destination, true) i nie trzeba dawać żadnego File.Exists.
Już nie mówię o sprawdzeniu w google, czy Copy umie nadpisywać pliki...


Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.