2012-01-25 27 views
5

文字列の配列(実際はArrayList)があり、配列の各要素がストリーム内の行であるInputStreamを作成したいと考えています。文字列の配列からInputStreamを作成する方法

これを最も簡単で効率的な方法で行うにはどうすればよいですか?

+0

私はコールバックから配列を取得しています。これをZipEntity(したがってInputStream)としてzipファイルに追加します。私はStringBuilderメソッドについても考えましたが、それを行うにはいくつかのより良い(InputStreamラッパー)方法があることを期待しました... – zacsek

答えて

6

StringBuilderを使用して、すべての文字列に改行を付けて間に追加することができます。その後、私はここにUTF-8を使用してい

new ByteArrayInputStream(builder.toString().getBytes("UTF-8"));

使用して入力ストリームを作成していますが、データや要件に応じて、異なるエンコーディングを使用する必要があります。

コンテンツを1行ずつ読み込むには、入力ストリームをラップする必要があります。

しかし、入力ストリームを使用する必要がない場合は、文字列配列を反復するだけで、コードを記述しやすくなり、解決しやすくなります。

0

最も簡単なのは、それらをStringBuilderで一緒に接着し、結果のStringをStringReaderに渡すことです。

0

もっと良い方法は、BufferedWriterクラスを使用することです。 つのサンプルがあります:

try { 
    List<String> list = new ArrayList<String>(); 
    BufferedWriter bf = new BufferedWriter(new FileWriter("myFile.txt")); 

    for (String string : list) { 
     bf.write(string); 
     bf.newLine(); 
    } 

    bf.close(); 
} catch (IOException ex) { 
} 
2

あなたはバイト配列を与えることができたクラスするByteArrayInputStreamを使用して試すことができますが。しかし、まずリストをバイト配列に変換する必要があります。以下を試してください。

List<String> strings = new ArrayList<String>(); 
    strings.add("hello"); 
    strings.add("world"); 
    strings.add("and again.."); 

    StringBuilder sb = new StringBuilder(); 
    for(String s : strings){ 
     sb.append(s);   
    } 

    ByteArrayInputStream stream = new ByteArrayInputStream(sb.toString().getBytes("UTF-8")); 
    int v = -1; 
    while((v=stream.read()) >=0){ 
     System.out.println((char)v); 
    } 
関連する問題