2010-04-25 16 views
8

Piszę stronę za pomocą GWT. Teraz muszę przeczytać plik tekstowy i wyświetlić zawartość strony, ale nie mam pojęcia, jak to zrobić z GWT.Czytanie pliku tekstowego w Google GWT?

To jest bardzo miłe, jeśli istnieje sposób w GWT, że mogę odczytać plik .properties. (Należy pamiętać, że nie jest to plik właściwości lokalizacji, który GWT już obsługuje)

Czy ktoś ma pomysł, proszę?

Dzięki.

Odpowiedz

10

Można odczytać pliki w aplikacji GWT użyciu RequestBuilder

new RequestBuilder(RequestBuilder.GET, "path/to/file.txt").sendRequest("", new RequestCallback() { 
    @Override 
    public void onResponseReceived(Request req, Response resp) { 
    String text = resp.getText(); 
    // do stuff with the text 
    } 

    @Override 
    public void onError(Request res, Throwable throwable) { 
    // handle errors 
    } 
}); 
+1

Czytelność pliku jest ograniczona tylko przez konfigurację serwera jest przechowywany na ('.htaccess', etc) - tak długo, jak plik jest publicznie dostępny można go pobrać za pośrednictwem' RequestBuilder'. Jeśli nie chcesz, aby twoje pliki były publiczne dla wszystkich, możesz napisać serwlet (lub podobną usługę), który uzyskuje dostęp do plików przechowywanych na serwerze (pliki wtedy nie są publicznie dostępne - tylko dla, na przykład, zarejestrowanych użytkowników). Możesz skonfigurować serwer na wiele sposobów - udostępniaj pliki tylko dla localhost, czytaj pliki z jakiegoś folderu innego niż www, itp. –

+0

Dobrze, zredagowałem moją odpowiedź, aby to odzwierciedlić. –

+0

Dziękuję wszystkim za odpowiedzi. Jednak mam problem w następujący sposób: Zrobiłem dokładnie powyższy kod. Mam jeden folder zawierający 3 pliki: abc.data, abc.file, net.properties. Chciałem odczytać kontekst pliku net.properties, ale powyższy kod zawsze zwraca kontekst pliku abc. Jeśli ten plik nie istnieje, zostanie zgłoszony wyjątek, nawet jeśli określę ścieżkę jako http://127.0.0.1:8080/path/net.properties. Masz pomysł? – ipkiss

1

Jeśli plik tekstowy jest częścią projektu GWT, można umieścić go w ClientBundle. Jeśli nie jest częścią twojego projektu, to RequestBuilder brzmi jak odpowiednia odpowiedź.

Opublikowałem prosty example project, aby pokazać, jak korzystać z ClientBundle.

String greetings = Assets.INSTANCE.greetings().getText(); 
final Greeter greeter = new Greeter(); 
greeter.loadGreetings(Arrays.asList(greetings.split("\\n"))); 
Powiązane problemy