2017-06-22 4 views
0

私はbespoke typeの2つの変数を取り、同じタイプの1つを返すJavaプラグインを開発しています。この型はInputStreamからInputStreamに変換することができます。私は最後に最初のものを最初に作って最初のものを作ってから、それを返す前に2つをマージする必要があります。すべての作物や合併を簡単にして維持しやすくするために、ここで使用する最も良い中間型は何ですか?私はそれを試して、それがエンコーディングを台無しにした文字列beacause経由で行きたくない。編集、マージ、返すInputStream

答えて

0

いくつかは、より多くの周りの差分のとテストの後、私は解決策を自分で見つけ:

public Document concat(final Document base, final Document addOn) throws IOException 
{ 
    // Convert Documents to InputStreams 
    InputStream isBase = base.getInputStream(); 
    InputStream isAddOn = addOn.getInputStream(); 

    // Create new variable as base minus last 33 bytes 
    int baseLength = isBase.available(); 
    byte[] baBase = IOUtils.toByteArray(isBase); 
    byte[] baEndLessBase = Arrays.copyOf(baBase, baseLength-33); 

    // Create new variable as addOn minus first 60 bytes 
    int addOnLength = isAddOn.available(); 
    byte[] baAddOn = IOUtils.toByteArray(isAddOn); 
    byte[] baHeadLessAddOn = Arrays.copyOfRange(baAddOn, 60, addOnLength); 

    // Combine the two new variables 
    byte[] baResult = new byte[baEndLessBase.length + baHeadLessAddOn.length]; 
    System.arraycopy(baEndLessBase, 0, baResult, 0, baEndLessBase.length); 
    System.arraycopy(baHeadLessAddOn, 0, baResult, baEndLessBase.length, baHeadLessAddOn.length); 

    // Debug 
//  FileUtils.writeByteArrayToFile(new File("baEndLessBase.pcl"), baEndLessBase); 
//  FileUtils.writeByteArrayToFile(new File("baHeadLessAddOn.pcl"), baHeadLessAddOn); 
//  FileUtils.writeByteArrayToFile(new File("baResult.pcl"), baResult); 

    // Convert to Document 
    Document result = new Document(baResult); 
    result.passivate(); 

    return result; 
} 

それは、単純なバイト配列を使用して、配列とIOUtilsクラスは重い物を持ち上げるのほとんどを行います。

関連する問題