• ベストアンサー

プロパティリストをVectorに出力したい場合

プロパティファイルの中身をVectorに入れたいのですが、 APIを見ると、 list(PrintStream out) 指定された出力ストリームに、プロパティリストを出力します。 と書かれてありますが、PrintStream outの部分をどうやればいいのかかわかりません・・・。 ご教授いただけたら幸いです。 よろしくお願いします。 Properties prop = new Properties(); prop.load(new FileInputStream("./test.properties")); prop.list(???);

  • aika25
  • お礼率49% (168/340)
  • Java
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • m_hagizo
  • ベストアンサー率65% (31/47)
回答No.2

list(PrintStream out)がうまくできたとしても、それをVectorに一括で取り込もうとすると、かえって複雑になりますね…。 ここは1個ずつ取り出して、Vectorに格納してあげた方が良いでしょう。 ただ、そもそもPropertiesは「キーと値」のペアを格納するのに対して、Vectorは「値」を格納するものです。これをどのように格納したいのでしょうか? "キー=値"という文字列をVectorに格納するものとして、こんな感じでいかがでしょう。 Vector v = new Vector(); Enumeration enum = prop.keys(); while(enum.hasMoreElements()) { String name = (String)enum.nextElement(); String value = props.getProperty(name); v.add(name + "=" + value); }

aika25
質問者

お礼

まさにこのやり方が知りたかったんです~! 本当にありがとうございました~!(^^

その他の回答 (1)

  • ranx
  • ベストアンサー率24% (357/1463)
回答No.1

list()を使うためには、Vectorを出力先とするPrintStreamの拡張クラスを自作しなくてはならないでしょう。 あまり効率的なやり方とは言えないように思います。 一つずつVectorに入れていく方が確実ではないでしょうか。 Vector result Enumeration enum = prop.propertyNames(); while (enum.hasMoreElements()) {  Property p = p.getProperty((String)enum.nextElement());  result.add(p); }

aika25
質問者

お礼

とってもとってもありがとうございました!(^^

関連するQ&A

  • Javaのプロパティファイルの文字化け対策

    いつもお世話になっております。 一連の質問で大分クリアになって来たのですが、まだ課題が残っています。 xxx.propertiesファイルを作成したとします。 プロパティに日本語を設定しました。 Java上でgetProperties()をすると文字化けしてしまいます。 初歩的な質問で申し訳ありませんが、具体的な対策をご教示願います。 public String getMailSubject() throws MailSendErrorException { String subject = null; try { Properties prop = new Properties(); // プロパティファイルからキーと値のリストを読み込む prop.load(new FileInputStream(this.properties)); subject = prop.getProperty("mail.subject"); } catch (Exception e) { e.printStackTrace(); throw new MailSendErrorException(); } return subject; } 上記のソースでmail.subjectに設定してある日本語文字列を取得したいのですが色々試しましたが上手く行きません。

    • ベストアンサー
    • Java
  • Tomcatプロジェクトの.propertiesファイルの置き場

    当方、Tomcat5.0,Eclipseでサーブレットを開発しております。 初歩的な質問で申し訳ありませんが、プロパティファイルの置き場所が 分からず難儀しております。 どなたかご教示願います。 prop.load(new FileInputStream("C:/work/workspace/worktools/mail.properties")); 上記の様にフルパスを指定すると認識するのですが、 prop.load(new FileInputStream("mail.properties")); この様にパスを省略するとFileNotFoundExceptionが発生してしまいます。WEB-INF直下にファイルを置いてるのですが、間違いなのでしょうか?

    • ベストアンサー
    • Java
  • カタカナの「ソ」以降の文字が文字化けします

    propertiesファイルから文字列を読み込む処理を行っているのですが、文字列にカタカナの「ソ」がはいると、「ソ」自体とそれ以降の1文字が文字化けしてしまいます。 これには何か対処方法があるのでしょうか? こんな感じの処理を行っています。 【propertiesファイルの内容】 path=C:\\MyWork\\ソース\\download 【読み込み処理】 FileInputStream fis = new FileInputStream(propfile); Properties prop = new Properties(); prop.load(fis); String sjs_path = getString(prop.getProperty("path"); String uni_path = new String(sjs_path.getBytes("iso-8859-1"), "Shift_JIS"); アドバイスよろしくお願いいたします。

    • ベストアンサー
    • Java
  • プロパティーのセット

    適当に「A.conf」等のファイルを作成し、 key=value を書いておきました。 FileInputStream propFile = new FileInputStream("socks.conf"); Properties p = new Properties(System.getProperties()); p.load(propFile); System.setProperties(p); のような使い方と、  System.getProperties().put(key,value); のような使い方の違いがわかりません。 また、セットした値を初期状態に戻す方法も教えていただけないでしょうか?  System.getProperties().remove(key); をするとkey自体が消去されてしまいます。 宜しくお願いします。

    • ベストアンサー
    • Java
  • JavaのSystem.setOut、System.setErrについ

    JavaのSystem.setOut、System.setErrについてです。 例えば、以下のようにして標準出力をファイルに出力するようにしたとします。 PrintStream psOut = new PrintStream( new FileOutputStream( new File("C:\\temp", "stdout.txt") ), true ); System.setOut( psOut ); System.out.println( "test Out" ); この後、プログラムを終了する場合、PrintStreamをcloseすべきなのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • ファイルパスが取得出来ない(Properties.getProperty使用)

    PropertiesクラスのgetPropertyメソッドを利用して 外部ファイルより値を取得しようとしています。 // ファイルパスの取得 java.util.Properties pr = new Properties(); pr.load(new FileInputStream("sample.properties")); String filePath = pr.getProperty("filePath"); fis.close(); // sample.properties filePath = C:\test\test.txt しかし、エスケープ記号?が問題で下記のようになり うまく取得出来ません。 filePath = C: est est.txt なぜこのような現象が起こるのでしょうか。 また、回避策はありますでしょうか。 よろしくお願いします。

  • java utf-8 で ファイル出力

    【やりたい事】  ファイルを読み込んで、改行コードCRLFをLFに変換して、空白行は削除して、「正常終了しました。」は削除。  文字コードUTF8で出力したい。 【問題】  UTF-8で指定してるのに、Shift_JISで出力される。 【入力ファイル】  ファイル名:test.tsv  文字コード:UTF-8  改行コード:CRLF ************************ test test1 1 2 1 3 正常終了しました。 ************************ 【現在のソース】 import java.io.*; public class writeFile { /** * @param args */ public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ try { //(1)FileReaderオブジェクトinFileを生成 FileReader inFile = new FileReader("test.tsv"); //(2)FileWriterオブジェクトoutFileを生成 FileWriter outFile = new FileWriter("test_lf.tsv"); //(3)BufferedReaderオブジェクトinBufferを生成 BufferedReader inBuffer = new BufferedReader(inFile); //(4)BufferedWriterオブジェクトoutBufferを生成 BufferedWriter outBuffer = new BufferedWriter(outFile); String line; int cnt=0; //(5)読み込みデータがなくなるまで、読み込み while ((line = inBuffer.readLine()) != null) { //(6)データの書き込み処理 if (line.equals("")){ cnt=cnt+1; }else{ if(cnt<=1){ outBuffer.write(line+"\n"); } } } outBuffer.flush(); //(7)バッファをフラッシュ inBuffer.close(); //(8)読み込みストリームのクローズ outBuffer.close(); //(9)書き込みストリームのクローズ } catch (IOException e) { } try { //(1) //(2)FileInputStreamオブジェクトの生成 FileInputStream abc = new FileInputStream("test_lf.tsv"); //(3)FileOutputStreamオブジェクトの生成 FileOutputStream xyz = new FileOutputStream("test_lf_utf.tsv"); //(4)InputStreamReaderオブジェクトの生成 InputStreamReader in = new InputStreamReader(abc, "Shift_JIS"); //(5)OutputStreamWriterオブジェクトの生成 OutputStreamWriter out = new OutputStreamWriter(xyz, "UTF-8"); int contents; //(6) //(7)読み込むデータがなくなるまで読み込み while ((contents = in.read()) != -1) { //(8)書き込むデータがなくなるまで書き込み out.write(contents); } in.close(); //(9)読み込みストリームを閉じる out.close(); //(10)書き込みストリームを閉じる } catch(IOException e) { } } } 【出力結果】  ファイル名:test_lf.tsv  文字コード:Shift_JIS  改行コード:LF ************************  test test1 1 2 1 3 ************************  ファイル名:test_lf_utf.tsv  文字コード:Shift_JIS  改行コード:LF ************************ test test1 1 2 1 3 ************************ 本当に困っています。 もう二日、はまってます。 ご教授願います。

    • ベストアンサー
    • Java
  • 「すでに開かれている」の意味を教えてください。

    「すでに開かれている」の意味を教えてください。 java.lang.System.outをリファレンスで確認したところ、 『「標準」出力ストリームです。このストリームはすでに開いていて・・・』 という記述がありました。 「すでに開いている」とは、インスタンス化されているということでしょうか? もし開かれていない場合、 java.lang.System.out g = new PrintStream(); なることをしてPrintStreamsをインスタンス化し、g.println()として使用しなければならないということでしょうか?これらが暗黙的に行われているという認識でいいのですか? 意味が分からないことになっていますか? 何かヒントがあればよろしくお願いします。

    • ベストアンサー
    • Java
  • ファイルよりの文字列の取り込み(Properties)

    下記のプログラムでテキストファイルに"0x5C"を含む文字列を 取り込んだ時に文字化けしてしまいます。 テキストファイルに\\を付加する逃げ方は検索して発見しましたが \\を付加を付加せずに解決する方法は有りませんでしょうか? import java.io.FileInputStream; import java.util.Properties; public class Class1 {  public static void main (String[] args) {   try {    FileInputStream oFileInputStream = new FileInputStream("c:\\test.txt");    Properties oProperties = new Properties();    oProperties.load(oFileInputStream);    String sTmp1 = oProperties.getProperty("100001T");    String sBuf1 = new String(sTmp1.getBytes("8859_1"), "MS932");    String sBuf2 = new String(oProperties.getProperty("100001M").getBytes("8859_1"), "MS932");    System.out.println(sBuf1);    System.out.println(sBuf2);   } catch (Exception oException) {    oException.printStackTrace();   }  } } /* 実行結果 可狽ナす。可狽ナす。可狽ナす。可狽ナす。 可能です。 */ /* test.txtの内容 100001T=可能です。可能です。可能です。可能です。 100001M=可能\\です。 100001S=1 100001L=0 */

    • ベストアンサー
    • Java
  • J2SE5.0のGenericsについて

    プロパティファイルから、キー名の昇順に値を取るために以下のようなコードを書きました。 ------------------------------------------ // プロパティファイルを読み込む Properties properties = new Properties(); properties.load(new FileInputStream(file)); // キーセットを取得する Set keySet = properties.keySet(); TreeSet keySet2 = new TreeSet(keySet); ------------------------------------------ しかし、最後の行で、以下のような警告?が出てしまいます。 ------------------------------------------ Type safety: The counstructor TreeSet(Collection) belongs to the raw type TreeSet References to generic type TreeSet<E> should be parameterized ------------------------------------------ おそらくGenericsに関連した警告だと思うのですが、いろいろいじってみても、警告が消えません。 動作に支障はないのですが気になります。 どうすれば警告が消えるでしょうか? ご存知の方がいたらお教え願えないでしょうか。 開発環境は以下のとおりです。 eclipse3.1 jdk1.5.0_02