文字列の配列(実際はArrayList)があり、配列の各要素がストリーム内の行であるInputStreamを作成したいと考えています。文字列の配列からInputStreamを作成する方法
これを最も簡単で効率的な方法で行うにはどうすればよいですか?
文字列の配列(実際はArrayList)があり、配列の各要素がストリーム内の行であるInputStreamを作成したいと考えています。文字列の配列からInputStreamを作成する方法
これを最も簡単で効率的な方法で行うにはどうすればよいですか?
StringBuilder
を使用して、すべての文字列に改行を付けて間に追加することができます。その後、私はここにUTF-8を使用してい
new ByteArrayInputStream(builder.toString().getBytes("UTF-8"));
使用して入力ストリームを作成していますが、データや要件に応じて、異なるエンコーディングを使用する必要があります。
コンテンツを1行ずつ読み込むには、入力ストリームをラップする必要があります。
しかし、入力ストリームを使用する必要がない場合は、文字列配列を反復するだけで、コードを記述しやすくなり、解決しやすくなります。
最も簡単なのは、それらをStringBuilderで一緒に接着し、結果のStringをStringReaderに渡すことです。
もっと良い方法は、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) {
}
あなたはバイト配列を与えることができたクラスする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);
}
私はコールバックから配列を取得しています。これをZipEntity(したがってInputStream)としてzipファイルに追加します。私はStringBuilderメソッドについても考えましたが、それを行うにはいくつかのより良い(InputStreamラッパー)方法があることを期待しました... – zacsek