Avatar billede frostware Nybegynder
31. juli 2004 - 22:54 Der er 14 kommentarer og
1 løsning

String til bestemt linie i .htm fil

Hej

Jeg har lavet et java program som ved et tryk på en knap genererer noget htm kode, som så manuelt kan kopieres ind i et htm dokument.

Kan man få java til at kopiere en streng til en bestemt linie i htm dokumentet? og hvordan gør man?

Mit dokument hedder test.htm
Min streng hedder kode1
Strengen skal kopieres over i f.eks. linie 20 i test.htm.


mvh
frostware
Avatar billede arne_v Ekspert
31. juli 2004 - 22:57 #1
Du lader dit Java program åbne det gamle HTML dokument for read, åbne
et nyt HTML dokument for write, læser 19 linier fra det gamle og skriver til
det nye, skriver den nye streng, læser resten af linierne fra det gamle
og skriver til det nye.
Avatar billede frostware Nybegynder
31. juli 2004 - 22:59 #2
vil du komme med et kode eksempel?
Avatar billede arne_v Ekspert
31. juli 2004 - 23:00 #3
Giv mig 5 minutter
Avatar billede arne_v Ekspert
31. juli 2004 - 23:07 #4
import java.io.*;

public class InsertLine {
    public static void insert(String oldfnm, int lineno, String html, String newfnm) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(oldfnm)));
        PrintWriter pw = new PrintWriter(new FileOutputStream(newfnm));
        String line;
        for(int i = 0; i < lineno; i++) {
            line = br.readLine();
            pw.println(line);
        }
        pw.println(html);
        while((line = br.readLine()) != null) {
            pw.println(line);
        }
        pw.close();
        br.close();
    }
    public static void main(String[] args) throws Exception {
        insert("C:\\z1.html", 5, "<br/>", "C:\\z2.html");
    }
}
Avatar billede frostware Nybegynder
31. juli 2004 - 23:16 #5
jeg er ikke vildt go' til java, så hvis du vil bruge test.htm (som hjemmeside dokument) kode1 som streng og linie 20 som indsættelses linie, ville det være rart.

Jeg er ikke interesseret i at den laver et nyt dokument, den kan bare åbne test.htm, finde linie 20, smide strengen kode1 og gemme/lukke igen.
Avatar billede arne_v Ekspert
31. juli 2004 - 23:18 #6
Der skal laves en ny fil. Man kan ikke fysisk indsætte en ny linie i en tekst fil.

Allerhøjest kan man overskrive den gamle fil med en anden med det samme navn.
Avatar billede arne_v Ekspert
31. juli 2004 - 23:20 #7
Og med hensyn til argumenterne så er det jo bare at rette den her linie
til:

insert("C:\\z1.html", 5, "<br/>", "C:\\z2.html");

første argument = navn eksisterende fil
andet argument = linie nummer
tredie argument = HTML der skal indsættes
fjerde argument = navn på fil med tekst indsat
Avatar billede frostware Nybegynder
31. juli 2004 - 23:21 #8
Så overskriver vi. Da jeg linker til filen med lige præcis det filnavn.
Avatar billede arne_v Ekspert
31. juli 2004 - 23:25 #9
import java.io.*;

public class InsertLine {
    private static final String TEMPFILE = "__ZZZZ__.ZZZ";
    public static void insert(String oldfnm, int lineno, String html) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(oldfnm)));
        PrintWriter pw = new PrintWriter(new FileOutputStream(TEMPFILE));
        String line;
        for(int i = 0; i < lineno; i++) {
            line = br.readLine();
            pw.println(line);
        }
        pw.println(html);
        while((line = br.readLine()) != null) {
            pw.println(line);
        }
        pw.close();
        br.close();
        (new File(oldfnm)).delete();
        (new File(TEMPFILE)).renameTo(new File(oldfnm));
    }
    public static void main(String[] args) throws Exception {
        insert("C:\\z1.html", 5, "<br/>");
    }
}
Avatar billede frostware Nybegynder
31. juli 2004 - 23:30 #10
kigger på det i morgen. Vi er der ikke helt endnu men jeg tror vi er på sporet.

hvis du vil bruge: test.htm
                  kode1
                  linie 20

tror jeg bedre jeg kan forstå det. :)
Avatar billede arne_v Ekspert
31. juli 2004 - 23:47 #11
Erstat:

insert("C:\\z1.html", 5, "<br/>");

med:

insert("test.htm", 20, kode1);
Avatar billede frostware Nybegynder
01. august 2004 - 09:36 #12
så virker det. Mit problem er nu at min htm streng (som indsættes) skal deles op med enterslag. I strengen gøres det med \n men da programmet får besked på at indsætte strengen på linie 20, står den KUN på linie 20. Kan det løses? Hvis det hjælper er min streng 15linier. Altså ned til linie 35
Avatar billede arne_v Ekspert
01. august 2004 - 10:36 #13
Her er en version som splitter linierne ved \n:

import java.io.*;

public class InsertLine {
    private static final String TEMPFILE = "__ZZZZ__.ZZZ";
    public static void insert(String oldfnm, int lineno, String html) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(oldfnm)));
        PrintWriter pw = new PrintWriter(new FileOutputStream(TEMPFILE));
        String line;
        for(int i = 0; i < lineno; i++) {
            line = br.readLine();
            pw.println(line);
        }
        String[] htmlsplit = html.split("\n");
        for(int i = 0; i < htmlsplit.length; i++) {
            pw.println(htmlsplit[i]);
        }
        while((line = br.readLine()) != null) {
            pw.println(line);
        }
        pw.close();
        br.close();
        (new File(oldfnm)).delete();
        (new File(TEMPFILE)).renameTo(new File(oldfnm));
    }
    public static void main(String[] args) throws Exception {
        insert("C:\\z1.html", 5, "<li>1\n<li>2\n<li>3");
    }
}
Avatar billede arne_v Ekspert
01. august 2004 - 10:36 #14
Og du skal stadig bare bruge
  insert("test.htm", 20, kode1);
Avatar billede frostware Nybegynder
01. august 2004 - 10:57 #15
perfekt!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester