XSLT変換するとき、Transformerクラスってのを使います。
このクラスが持つtransformメソッドは、引数にStreamのInputとOutputを入力するようになっています。
でも、OutputStreamに何かを書き出してから、それをSourceとしてtransformしたい場合、Sourceの型はInputStreamになっているので、一旦ファイルに落として再読み込みしなければならない。。。
と思っていたのですが、PipedOutputStreamを使って、PipedInputStreamにconnectしてあげれば、OutputStreamをInputStreamに変換(?)、という事が可能です。
で、PipedOutputStreamをBufferedOutputStreamでWrapしてあげて、これに沢山のデータを突っ込んでいると、あるタイミングでflushが走ります。そうすると、PipedInputStreamが確保しているBuffer領域にデータが流し込まれます。
確保するBuffer領域は、デフォルトで1024bytesです。
また、このPipedInput/OutputStreamは、マルチスレッドで使用しないと、デッドロックが発生する可能性があります。
また、このPipedInput/OutputStreamを使用する時に注意すべき事があるのですが、OutputStream側が書き出しをしているのに、InputStream側がcloseしてしまうと、Exceptionを(確か)吐きます。
なので、closeするタイミングも気にしながら実装すると、バグを埋め込まないで実装できると思います。
ラベル
RoR
WSUS
MECM
SCCM
環境構築
WindowsServer2016
更新プログラム
Python
Eclipse
GAE
Macports
AWS
Django
GoCilpse
Hibernate
PeerCache
SQL
SSL
SchUseStrongCrypto
TLS
VPN
WindowsServer2019
bootstrap
emacs
gcc
git
go
haml
react
AmazonSES
Apache Derby
BranchCache
CB2207
CleanCode
Database
Defender
DeltaDownload
Edge
EffectiveJava
GPO
MAILER-DAMON
MCM
RC4
RDS
Report
ReportingServices
Route53
SQLServer2017
Spring
StreamCipher
SupportBlog
Vagrant
Wireshark
WorkMail
Xcode
amazon
android
ccmcache
certificate
gdb
golang
oauth
pg
registry
sup
w3wp
webapp
イネーブルメントパッケージ
インプレースアップグレード
バージョン管理
帯域外リリース
有効化パッケージ
東プレ
配布ポイント
0 件のコメント:
コメントを投稿