ADAの読み書き

ADA(Application Data Area)を読み書きするサンプルコード(Main.java)。
applicationおよびorganizationのディレクトリにファイルを”test”という文字を含むファイルを生成したのち、それぞれ読み出している。
正しく動作した場合、画面上に”=====================”が2回表示され、それぞれの下にsuccess”の文字が2回表示される

 

本サンプルコードが意図したとおりに動作するために必要な条件を以下にリストアップする。

 

Main.java

import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.BufferedReader;
 
import javax.tv.xlet.Xlet;
import javax.tv.xlet.XletContext;
 
import org.havi.ui.HScene;
import org.havi.ui.HSceneFactory;
import org.havi.ui.HScreen;
 
public class Main extends Component implements Xlet{
	private HScene hs;
	private XletContext xc;
	String ada_root = System.getProperty("dvb.persistent.root");
	String fs = System.getProperty("file.separator");
	String orgID;
	String appID;
	String appPath,orgPath;
	Graphics g;
	public void initXlet(XletContext context){
		xc = context;				// XletContextを保持
		orgID = (String) xc.getXletProperty("dvb.org.id");
		appID = (String) xc.getXletProperty("dvb.app.id");
		orgPath = ada_root + fs + orgID;
		appPath = orgPath + fs + appID;
		hs= HSceneFactory.getInstance().getFullScreenScene(
			HScreen.getDefaultHScreen().getDefaultHGraphicsDevice());
		setBounds(hs.getBounds());
		hs.add(this);
 
		hs.setVisible(true);
		requestFocus();
		g= this.getGraphics();
		g.setColor(new Color(255,255,255));
 
		String writeText = "test";
		String readText = "****";
		g.drawString("Test ===============================================", 100, 100);
			readText = readFile(appPath+fs+"text.txt");
			if( readText.equals(writeText) ){
				g.drawString("read ["+readText+"] from "+appPath+fs+"text.txt: " +
						"success", 100, 200);
			} else {
				g.drawString("read ["+readText+"] from "+appPath+fs+"text.txt: " +
						"fail", 100, 200);
			}
		readText = "****";
		g.drawString("===============================================", 100, 300);
			readText = readFile(orgPath+fs+"text.txt");
			if( readText.equals(writeText) ){
				g.drawString("read ["+readText+"] from "+orgPath+fs+"text.txt: " +
						"success", 100, 400);
			} else {
				g.drawString("read ["+readText+"] from "+orgPath+fs+"text.txt: " +
						"fail", 100, 400);
			}
	}
 
	String readFile(String path) {
		FileInputStream fis;
		String s = null;
		try {
			fis = new FileInputStream(path);
			BufferedReader r = new BufferedReader( new InputStreamReader(fis));
			s = r.readLine();
			r.close();
		} catch (Exception e){
			e.printStackTrace();
 
		}
		return s;
	}
	boolean writeFile(String path, String s) {
		FileOutputStream fos;
		try {
			fos = new FileOutputStream(path);
			BufferedWriter w = new BufferedWriter( new OutputStreamWriter(fos));
			w.write(s);
			w.close();
		} catch (Exception e){	return false;}
		return true;
	}
	public void startXlet(){	}
	public void pauseXlet(){	}
	public void destroyXlet(boolean unconditional){	}
}

 


関連する項目

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください