0

ファイルに基本情報を挿入して行を追加し、その結果をZipファイルに含める。 C#にはMemoryStreamが存在しますが、javaではありません。Java - テンプレートとしてファイルを読み込み、コンテンツをメモリに追加して、バイトを管理する

私のアプリケーションのコンテキストは、私がdinamically得る他のスタイルを追加するための定義済みのスタイルでstylesheet.cssファイルを読み込みます。後でこのコンテンツをZI​​Pエントリに追加したいと思います。このコンテンツを表すbyte []が必要です。

瞬間のために、私は次の行を持っている、しかし、私は、これは[]のバイトに変換して知らない:

ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); 
File file = new File(classLoader.getResource("style.css").getFile()); 

OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(file)); 
BufferedWriter writer = new BufferedWriter(osw); 

私はByteArrayOutputStreamと、試みたが、私はすべての要件を完了することはできません。

私の目標を達成するために他のアイデアを打ち明けてください。私もCSSParserを探していましたが、コンテンツを追加してzipファイルに追加するためのFileドキュメント(byte [])を取得できるので、私は見ませんでした。

+0

にテキストを追加 "すべての私の要件を完了することはできません。" ?例外が表示されますか?スタックトレースを共有します。また、[Minimal、Complete and Verifiable example](http://stackoverflow.com/help/mcve)を作成する方法をお読みください。 – Ivan

+0

私の必要条件:1.メモリにファイルを読み込みます。2. dinamicallyを追加します。内容もメモリに保存されます。3. zipファイルに追加するためにbyte []に​​変換します。 –

答えて

0

Finnaly、InputStreamをByteArrayOutputStreamバイトにバイトに変換する私の問題の他の解決策が見つかりませんでした。

次のメソッドを作成しました。

テンプレートファイルを入力ストリームに読み込んで変換します。

public static final ByteArrayOutputStream toOutputStream(InputStream inStream) { 
    try { 
     ByteArrayOutputStream outStream = new ByteArrayOutputStream(); 

     int byteReads; 
     while ((byteReads = inStream.read()) != -1) { 
      outStream.write(byteReads); 
     } 

     outStream.flush(); 
     inStream.close(); 

     return outStream; 

    } catch (Exception e) { 
     throw new RuntimeException("error message"); 
    } 
} 

をバイトをByteArrayOutputStreamバイトに

private ByteArrayOutputStream getByteArrayOutputStreamFor(String templateName) { 
    try { 
     ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); 
     InputStream inStream = classLoader.getResourceAsStream(templateName); //file into resources directory 
     ByteArrayOutputStream baos = Utils.toOutputStream(inStream); 

     return baos; 

    } catch (Exception e) { 
     String msg = String.format("erro to loaf filetemplate {%s}: %s", templateName, e.getMessage()); 
     throw new RuntimeException(msg, e.getCause()); 
    } 
} 

コピーInputStreamが最後に、私はそれが何を意味しByteArrayOutputStream

ByteArrayOutputStream baosCSS = getByteArrayOutputStreamFor("templateName.css"); 
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(baosCSS)); 
writer.append("any text"); 
writer.flush(); 
writer.close(); 

byte[] bytes = baosCSS.toByteArray() 
関連する問題