İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır
Zafer Teker
tekzaf@yahoo.com

Bir URL dosyasının içeriğini Text Box'ta gösteren bir midlet

Giriş

Bu örnekte bir adresteki (http://localhost:8080/examples/midlet_test/index.txt) dosyanın içeriğini okuyup, bir text box'ta göstereceğiz. Midletlerde network özelliklerini kullanacağız.

Göster Gizle Kopar Satır Gizle Satır Göster
  1 import javax.microedition.lcdui.*;
  2 import javax.microedition.io.*;
  3 import java.io.*;
  4 public class DataInputFromURL  extends MIDlet{    
  5     NetworkTextBox box;
  6     public void startApp(){
  7         box=new NetworkTextBox("Test:","",20,TextField.ANY);
  8         Display.getDisplay(this).setCurrent(box);        
  9     }
 10     public void exit(){}  
 11     public void pauseApp(){}
 12     public void destroyApp(boolean unconditional){}            
 13 }
 14 class NetworkTextBox extends TextBox{
 15     String url="http://localhost:8080/examples/midlet_test/index.txt";
 16     String data;
 17     public NetworkTextBox(String title,String text,int maxSize,int constraints){
 18         super(title,text,maxSize,constraints);        
 19         try{
 20             data=getData();
 21         }catch(Exception e){
 22             e.printStackTrace();
 23             data="Exception: "+e.getMessage();
 24         }
 25         setString(data);
 26     }
 27     private String getData() throws Exception{
 28         StringBuffer sb=new StringBuffer();
 29         InputStream is=Connector.openInputStream(url);
 30         int ch;
 31         while((ch = is.read()) != -1) {
 32             sb.append((char) ch);
 33         }
 34         return sb.toString();
 35     }
 36 }

NetworkTextBox class'ı TextBox class'ını extends etmiştir. TextBox midletlerde ekranı tamamen kaplayan bir text alanıdır. Biz midlet yüklendiğinde (startApp methodu)

box=new NetworkTextBox("Test:","",20,TextField.ANY);
Display.getDisplay(this).setCurrent(box);        

şeklinde ekrana NetworkTextBox class'ının bir nesnesini koyuyoruz.

NetworkTextBox class'ının kurucusunda http://localhost:8080/examples/midlet_test/index.txt adresinden index.txt dosyasının içeriği data değişkenine atanmaktadır. getData(); method'u bu işi yapmaktadır. Data http://localhost:8080/examples/midlet_test/index.txt adresinden alındıktan sonra TextBox class'ının setString method'u kullanılaran data text box'ta gösterilir.

getData method'u http://localhost:8080/examples/midlet_test/index.txt dosyasının içeriğini almak için

InputStream is=Connector.openInputStream(url);

şeklinde bir InputStream yaratır. Bu inputstream'den karakter karakter veri okunabilir.

int ch;
while((ch = is.read()) != -1) {
	sb.append((char) ch);
}

şeklinde is.read() -1 döndürene kadar (Stream'in sonuna gelene kadar) okunan karakterler StringBuffer nesnesine eklenmektedir.

String yerine StringBuffer kullanılması performans artırmını sağlar. String yerine StringBuffer kullanılmasının nedeni bu.

getData() methodu index.txt dosyasının içeriğini String olarak bize verir.

Dosya Listesi

İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır