getLine, rozbijanie stringa

0

metoda getLine zwraca string ktory jest zawartoscia pliku
zalezy mi zeby do tablicy tString byly przypisywane kolejno linie pliku a niestety tak sie nie dzieje bo przypisywany jest przy pierwszym przymisaniu cala zawartosc pliku...
tam gdzie sa wstawione wykrzykniki (!!!) zachodzi przypisanie calej zawrtosci pliku a mi zalezy na przypisaniu pierwszej linii po indeksem a = 0, drugiej pod indeksem a = 1... itd
czyli celem by bylo rozbicie zmiennej 'line' na mniejsze stringi przy czym delimiter to bylby koniec linii,,, ale jak to zrobic?

/*
 * live.java
 *
 * Created on 12 styczeń 2008, 02:18
 */

package futbol24; 

import java.io.IOException;
import javax.microedition.lcdui.*;
import javax.microedition.io.*; // do laczenia sie z serwerem
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.io.*;

/**
 *
 * @author  bart
 * @version
 */
public class DataTransfer {
    
    private Form tForm;
    private String[][] tString;

    
    public String httpAddress = ""; // url where the file is set
    
    String getLine(InputStream is) {
        String line = "";
        
        try {
            byte b[] = new byte[1];
            int end;
            end = is.read(b);
            
            if( end != -1 ) {
                while ((new String(b).equals("\r") == false) && end!=-1) {
                    line += new String(b);
                    end = is.read(b);
                }
            } else if(end == -1) {
                    return "EOF";
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        
        return line;
    }
    
    public String[][] get_TextBox() throws IOException {
        
        if (tForm == null) {

            this.tString = new String[5][2];
            
            HttpConnection sc = (HttpConnection)Connector.open(this.httpAddress);
            InputStream is = sc.openInputStream();
            
            boolean flag = true;
            String line;
            int a = 0;
            
            while(flag) {
                line = this.getLine(is);
                if(line.equals("EOF")) {
                    flag = false;
                    break;
                } else {
                    tString[a][0] = line; // !!!
                    tString[a++][1] = "testwerwerwer";
                }
            }
            
            is.close();
            sc.close();
        }
        
        return tString;
    }
    
}
0

Dziwi mnie, że chcesz czytać po bajcie. Znacznie łatwej czyta się plik za pomocą BuferedReader:

BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); 
List<String> text = new LinkedList<String>();
String line;
while((line = reader.readLine()) != null) {
  text.add(line);
}

W ten sposób odpada ręczne dbanie o wyszukiwanie końca linii itp.

0

Koziołek zwróc uwage ze to jest J2ME a tam nie ma BufferedReader.

csh - sprawdz co ci zwraca metoda getLine. Moze ona zwraca ci zawartosc calego pliku( w co wątpie bo ta metoda jest tak zrobiona, aby zwracała pojedyncze linie z pliku).
Jak dla mnie to powinno to działac ;)

0

samos -racja to J2ME, niestety wyglada na to ze ona zwraca caly plik co tez mnie dziwi :/ mam racje? moze ktos mnie poprawi? ale skoro przypisuje od razu do

tString[0][0]
cala zawartosc a dla nastepnych
tString[1][0]
i
tString[2][0]

przypisuje nulle to znaczy ze mam racje chyba

0

mi po prostu chodzi żeby jakos z wbudowanych funkcji dla J2ME napisac jakiejs funkcji wczytujacej linia po linii plik do tablicy stringow

0

A więc tak:
metoda getLine() zczytuje bajt po bajcie az do momentu, kiedy napotka znak przejscia do nowej lini, lub plik sie skonczy. Jeżeli bys sprawdził to na zwykłym pliku textowym, to miałbys kazda linijke w innym indexie. Rzeczywiscie, cały kod html jest tak jakby pisany w jednej linijce, tak jakby nie było znaku "\r". Musisz jakos inaczej sprawdzic, kiedy jest koniec lini. Moze w HTMLu jest to jakis inny znak - tego niesety nie wiem.

0

Dla przeglądarki "\r" i "\n" nie mają żadnego znaczenia. Dlatego często HTML tworzone programowo są w jednej linii. Aby podzielić powinieneś szukać "
".

1 użytkowników online, w tym zalogowanych: 0, gości: 1