トップページ -> 実践知識 -> Java プログラミング入門 -> IE テキストセーブ設定ファイル生成プログラム
[サイトマップへ]  

IE テキストセーブ設定ファイル生成プログラム

サイト構成 連絡先,業績など 実践知識 コンピュータ 教材 サポートページ

IE テキストセーブで,Internet Explorer の「保存」を行うと, HTMLタグで name属性かid属性が指定されている項目のデータが,テキストファイルとして保存されう. 保存されるデータは下記コントロールの入力データ.

データはテキスト形式(タブ区切り)で保存されます。 拡張子は *.ietxt

下記のプログラムは,フリーソフトのIEテキストセーブと同時に使う. IE テキストセーブでの保存ファイルを,簡単に書き換えることができるプログラムである. 値を,所定のWebフォームに入力することを手助けできる.

package hoge.hoge.com;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import java.util.StringTokenizer;

/* フリーソフト
 * IEテキストセーブの「保存ファイル」を読み込んで,更新し,書き戻すプログラム
 * 必要な前準備:
 * 1.IEテキストセーブを http://www.onepg.com/web/ie/index.html
 *   からダウンロード
 * 2. c:\ietextsave に展開
 * 3. プログラム中のURLを設定してください.
 * 4. 本プログラムを実行し,IEテキストセーブをの機能で,sample.ietxt という名前で,設定ファイルを保存しておいてください
 *   (このとき,sample.ietxtが存在しないので,実行エラーがでます).
 * 5. write の行のファイル名を適切に設定した後,もう1度実行.この名前でファイルができる(今のプログラムは,単にファイルのコピーと同じこと)
 */
public class IETextSaveHandler {
	/* Shift_JIS, ISP-2022-JP, EUC-JP Windows-31J */
	/* 出力時に JISAutoDetect の指定は不可 */
	private String inFileName;
	private String lastWriteFileName;
	private static String outFileCoding = "Shift_JIS";
	private static String browser = "C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE";
	private static String URL = "http://www.yahoo.co.jp";
	private HashMap<String, String> dict;
	
	public static void main(String[] args) {
		IETextSaveHandler handler = new IETextSaveHandler( "c:\\ietextsave\\sample.ietxt");
		handler.read();
		handler.printDict();
		handler.write( "C:\\ietextsave\\報告.ietxt");
		handler.lauchBrowser( "C:\\ietextsave\\IeTxSave.exe", "C:\\ietextsave\\IeTxSave.ini", "C:\\ietextsave\\" );
	}
	
	public IETextSaveHandler( String inFile ) {
		inFileName = inFile;
		dict = new HashMap<String,String>();
	}
	public void read() {
		/* タブ区切りのテキストファイル(例えば下記)の1列目,2列目を読み込み,
		 * 1列目の値をキーとし,2列目の値を持つ連想配列を作る.
		 * uid	1234
		 * name	hoge
		 */
		try{
			String line;
			BufferedReader inFile = new BufferedReader(
					new InputStreamReader( new FileInputStream( inFileName ), "JISAutoDetect" ) );
			while((line=inFile.readLine()) != null) {
				StringTokenizer st = new StringTokenizer(line, "\t");
				int length = st.countTokens();
				if ( length >= 2 ) {
					String key = st.nextToken();
					String val = st.nextToken();
					dict.put( key, val );
				}
			}
			inFile.close();
		}
		catch(IOException e){
			e.printStackTrace();
		}
		
	}

	public void printDict() {
		Object [] keys = dict.keySet().toArray();
	    for( int i = 0; i < keys.length; i++ ) {
	    	System.out.println( keys[i] + ":" + dict.get(keys[i]) );
	    }
	}
	
	public void write( String outFileName ) {
	/* ファイルが存在しない場合には新たに作成.存在する場合には上書き */
		try{
			Object [] keys = dict.keySet().toArray();
			BufferedWriter outFile = new BufferedWriter(
				new OutputStreamWriter( new FileOutputStream( outFileName ), outFileCoding ) );
			for( int i = 0; i < keys.length; i++ ) {
				StringBuffer buf = new StringBuffer();
				buf.append( keys[i] );
				buf.append("\t");
				buf.append( dict.get(keys[i]) );
				outFile.write(buf.toString());
				outFile.newLine();
			}
			outFile.close();
			lastWriteFileName = outFileName;
		}
		catch(IOException e){
			e.printStackTrace();
		}
	}
	
	public void lauchBrowser( String prog, String iniFileName, String path ) {
			try{
				BufferedWriter outFile = new BufferedWriter(
					new OutputStreamWriter( new FileOutputStream( iniFileName ), outFileCoding ) );
				/* [NONTITLED] */
				outFile.write("[NONTITLED]");
				outFile.newLine();
				outFile.write("FileSavePath=" + path);
				outFile.newLine();			
				outFile.close();
				Runtime.getRuntime().exec(new String[] {browser, URL});
				Runtime.getRuntime().exec(new String[] {prog, path + lastWriteFileName});
			}
			catch(IOException e){
				e.printStackTrace();
			}
		}
}

参考Webページ: http://www.onepg.com/web/ie/index.html