ÿþJ a c e k R u m i Ds k i - J z y k J A V A
J a c e k R u m i Ds k i - J z y k J A V A R o z d z i a B 7
J a c e k R u m i Ds k i - J z y k J A V A
J a c e k R u m i Ds k i - J z y k J A V A
R o z d z i a B 7 S t r u m i e n i e , o p e r a c j e w e j [c i a - w y j [c i a
7 . 1 S t r u m i e n i e
7 . 2 S t a n d a r d o w e o b s Bu g a w e j [c i a - w y j [c i a - k l a s y I n p u t S t r e a m
o r a z O u t p u t S t r e a m
7 . 2 . 1 O b s Bu g a w e j [c i a k l a s a I n p u t S t r e a m
7 . 2 . 2 O b s Bu g a w e j [c i a k l a s a O u t p u t S t r e a m
7 . 2 . 3 O b s Bu g a p l i k ó w
7 . 3 O b s Bu g a s t r u m i e n i t e k s t u
7 . 4 D z i e l e n i e s t r u m i e n i a k l a s a S t r e a m T o k e n i z e r
7 . 5 S t r u m i e n i e p o z a j a v a . i o
7 . 1 S t r u m i e n i e
W c e l u s t w o r z e n i a u n i w e r s a l n e g o m o d e l u p r z e p By w u d a n y c h w y k o r z y s t u j e s i
w J a v i e m o d e l s t r u m i e n i d a n y c h . S t r u m i e D ( s t r e a m ) j e s t s e k w e n c j d a n y c h , z w y k l e
b a j t ó w . P o c h o d z e n i e i t y p s e k w e n c j i d a n y c h z a l e |n y j e s t o d d a n e g o [r o d o w i s k a .
P o d s t a w o w e t y p u s t r u m i e n i t o t e z w i z a n e z o p e r a c j a m i w p r o w a d z a n i a d a n y c h d o
p r o g r a m u ( o p e r a c j e w e j [c i a ) i z o p e r a c j a m i w y p r o w a d z a n i a d a n y c h p o z a p r o g r a m
( o p e r a c j e w y j [c i a ) . W J a v i e d o o b s Bu g i o p e r a c j i w e j [c i a s t w o r z o n o k l a s I n p u t S t r e a m ,
n a t o m i a s t d l a o b s Bu g i o p e r a c j i w y j [c i a s t w o r z o n o k l a s O u t p u t S t r e a m . S t r u m i e D
z w i z a n y j e s t r ó w n i e | z t y p e m o b s z a r u ( u r z d z e n i a ) z / d o k t ó r e g o s e k w e n c j a d a n y c h
p r z e p By w a o r a z t y p e m d a n y c h . P o d s t a w o w e o b s z a r y ( u r z d z e n i a ) t o n p . p a m i
o p e r a c y j n a , d y s k i ( p l i k i ) , s i e , d r u k a r k a , e k r a n , i t p . T y p y d a n y c h j a k i e m o g b y
w y k o r z y s t y w a n e p r z y p r z e s y Ba n i u d a n y c h t o n p . b y t e , S t r i n g , O b j e c t , i t p . Z g o d n i e z
d y s t r y b u c j J D K 1 . 0 k l a s y O u t p u t S t r e a m o r a z I n p u t S t r e a m r e p r e z e n t u j s t r u m i e n i e
j a k o s e k w e n c j e b a j t ó w , c z y l i e l e m e n t ó w t y p u b y t e . C z s t o j e d n a k z a c h o d z i p o t r z e b a
f o r m a t o w a n i a d a n y c h s t r u m i e n i a . M o |n a t o w y k o n a w J a v i e k o r z y s t a j c z r ó |n y c h
k l a s f o r m a t u j c y c h d z i e d z i c z c y c h z O u t p u t S t r e a m i I n p u t S t r e a m . D o b r y m
p r z y k Ba d e m j e s t o b s Bu g a d a n y c h t e k s t o w y c h w y [w i e t l a n y c h n a s t a n d a r d o w y m
u r z d z e n i u w y j [c i a . Z g o d n i e z t y m c o b y Bo o m a w i a n e w c z e [n i e j k l a s y c z n m e t o d
w y d r u k u t e k s t u w k o n s o l i j e s t u |y c i e p o l e c e n i a S y s t e m . o u t . p r i n t l n ( ) ; g d z i e o u t j e s t
o b i e k t e m k l a s y P r i n t S t r e a m , s t a n o w i c e j k l a s f o r m a t u j c b a j t y s e k w e n c j i
p o c h o d z c y c h z O u t p u t S t r e a m n a t e k s t . R o z p a t r u j c d a l e j r ó |n o r o d n o [ o b s Bu g i
s t r u m i e n i w J a v i e n a l e |y w s p o m n i e o d o d a t k o w y c h k l a s a c h w p r o w a d z o n y c h z
w e r s j J D K 1 . 1 , a m i a n o w i c i e k l a s a c h R e a d e r o r a z W r i t e r . K l a s y t e s t a n o w i
a n a l o g i d o k l a s I n p u t S t r e a m o r a z O u t p u t S t r e a m , n i e m n i e j p r z y g o t o w a n e s d o
o b s Bu g i d a n y c h t e k s t o w y c h ( S t r i n g ) . W o m a w i a n y c h w c z e [n i e j r o z d z i a Ba c h u |y t o j u |
p r z y k Ba d o w e j k l a s y d z i e d z i c z c e j z k l a s y W r i t e r , a m i a n o w i c i e k l a s y P r i n t W r i t e r
( z a m i a s t P r i n t S t r e a m ) . W p r o w a d z e n i e d o d a t k o w y c h k l a s o b s Bu g u j c y c h s e k w e n c j e
Ba Dc u c h ó w z n a k ó w m i a Bo n a c e l u u j e d n o l i c e n i e p r a c y w [r o d o w i s k u J a v y z t e k s t e m
z a p i s y w a n y m k o d o w a n y m w U n i c o d z i e ( 2 b a j t y n a z n a k ) . D o d a t k o w e , o d d z i e l n e
k l a s y s t r u m i e n i t o k l a s a S t r e a m T o k e n i z e r d z i e l c a s t r u m i e D t e k s t o w y n a l e k s e m y
o r a z k l a s a R a n d o m A c c e s s F i l e o b s Bu g u j c a p l i k i z a w i e r a j c e r e k o r d y o z n a n y c h
r o z m i a r a c h , t a k |e m o |n a d o w o l n i e p o r u s z a s i w o b r b i e r e k o r d ó w i j e
m o d y f i k o w a . W a |n y m z a g a d n i e n i e m z w i z a n y m z e s t r u m i e n i a m i j e s t m o |l i w o [
z a p i s u o b i e k t u j a k o s e k w e n c j i b a j t ó w i p r z e s Ba n i e g o d o p r o g r a m u ( m e t o d y )
d z i a Ba j c e j z d a l n i e . E f e k t t e n j e s t u z y s k i w a n y p o p r z e z z a s t o s o w a n i e m e c h a n i z m u
s e r i a l i z a c j i i w y k o r z y s t a n i a k l a s O b j e c t I n p u t S t r e a m o r a z O b j e c t O u t p u t S t r e a m .
7 - 3
J a c e k R u m i Ds k i - J z y k J A V A
J a c e k R u m i Ds k i - J z y k J A V A R o z d z i a B 7
J a c e k R u m i Ds k i - J z y k J A V A
J a c e k R u m i Ds k i - J z y k J A V A
W s z y s t k i e o m a w i a n e k l a s y o b s Bu g u j c e r ó |n e t y p y s t r u m i e n i s z d e f i n i o w a n e w
p a k i e c i e j a v a . i o .
W y k o r z y s t a n i e s t r u m i e n i j e s t p o w s z e c h n e w t w o r z e n i u p r o g r a m ó w t a k w i c w a r t o
b l i |e j z a p o z n a s i z p o d s t a w o w y m i k l a s a m i j e o b s Bu g u j c y m i .
7 . 2 S t a n d a r d o w e o b s Bu g a w e j [c i a - w y j [c i a - k l a s y I n p u t S t r e a m o r a z
O u t p u t S t r e a m
7 . 2 . 1 O b s Bu g a w e j [c i a k l a s a I n p u t S t r e a m
K l a s a t a j e s t k l a s a b s t r a k c y j n i z a w i e r a p o d s t a w o w e m e t o d y u m o |l i w i a j c e
o d c z y t y w a n i e i k o n t r o l b a j t ó w z e s t r u m i e n i a . P o n i e w a | j e s t t o k l a s a a b s t r a k c y j n a n i e
t w o r z y s i d y n a m i c z n i e o b i e k t u t e j k l a s y , l e c z m o |n a g o u z y s k a p o p r z e z o d w o Ba n i e
s i d o s t a n d a r d o w e g o w e j [c i a z a i n i c j o w a n e g o z a w s z e w p o l u i n k l a s y S y s t e m , c z y l i
S y s t e m . i n . I n n e m o |l i w o [c i u z y s k a n i a o b i e k t u k l a s y I n p u t S t r e a m t o w y w o Ba n i e
m e t o d z w r a c a j c y c h r e f e r e n c j d o o b i e k t u t e g o t y p u n p . : m e t o d a g e t I n p u t S t r e a m ( )
z d e f i n i o w a n a w k l a s i e S o c k e t . J e d y n m e t o d a b s t r a k c y j n ( c z y n i c z t e j k l a s y
k l a s a b s t r a k c y j n ) j e s t m e t o d a r e a d ( ) o z n a c z a j c a c z y t a n i e k o l e j n e g o b a j t u z e
s t r u m i e n i a w e j [c i a . P o z o s t a Be m e t o d y u m o |l i w i a j :
- o d c z y t b a j t ó w d o z d e f i n i o w a n e j t a b l i c y :
i i n t t r r e a d ( ( b y t t e b [ [ ] ] ) ) ; ;
i n t r e a d ( b y t e b [ ] ) ;
n e a d b y e b
i i n t t r r e a d ( ( b y t t e b [ [ ] ] , , i i n t t o f f f f s e t t , , i i n t t l l e n g t t h ) ) ; ;
e
i n t r e a d ( b y t e b [ ] , i n t o f f s e t , i n t l e n g t h ) ;
n e a d b y e b n o s e n n g h
- p o m i n i c i e o k r e [l o n e j l i c z b y b a j t ó w w o d c z y c i e :
l l o n g s k i i p ( ( l l o n g n ) ) ; ;
l o n g s k i p ( l o n g n ) ;
o n g s k p o n g n
- k o n t r o l s t a n u s t r u m i e n i a ( c z y s d a n e ) :
i i n t t a v a i i l l a b l l e ( ( ) ) ; ;
i n t a v a i l a b l e ( ) ;
n a v a a b e
- t w o r z e n i e m a r k e r ó w :
b o o l l e a n m a r r k S u p p o r r t t e d ( ( ) ) ; ; k o n t t r r o l l a c z y t t w o r r z e n i i e m a r r k e r r ó w j j e s t t m o |l l i i w e
b o o l e a n m a r k S u p p o r t e d ( ) ; k o n t r o l a c z y t w o r z e n i e m a r k e r ó w j e s t m o |l i w e
b o o e a n m a k S u p p o e d k o n o a c z y w o z e n e m a k e ó w e s m o | w e
s y n c h r r o n i i z e d v o i i d m a r r k ( ( i i n t t r r e a d l l i i m i i t t ) ) ; ;
s y n c h r o n i z e d v o i d m a r k ( i n t r e a d l i m i t ) ;
s y n c h o n z e d v o d m a k n e a d m
s y n c h r r o n i i z e d v o i i d r r e s e t t ( ( ) )
s y n c h r o n i z e d v o i d r e s e t ( )
s y n c h o n z e d v o d e s e
- z a m k n i c i e s t r u m i e n i a
v o i i d c l l o s e ( ( ) ) ; ;
v o i d c l o s e ( ) ;
v o d c o s e
P r a w i e w s z y s t k i e m e t o d y ( p o z a m a r k S u p p o r t e d ( ) o r a z m a r k ( ) ) m o g w y g e n e r o w a
w y j t e k , k t ó r y m u s i b y z a d e k l a r o w a n y l u b o b s Bu g i w a n y w k o d z i e p r o g r a m u .
P o d s t a w o w k l a s w y j t k ó w j e s t t u t a j k l a s a I O E x c e p t i o n .
P o k a z a n e w y |e j m e t o d y r e a d ( ) b l o k u j d o s t p t a k d Bu g o , j a k d a n e s d o s t p n e l u b
w y s t p i k o n i e c p l i k u a l b o w y g e n e r o w a n y z o s t a n i e w y j t e k .
K l a s y d z i e d z i c z c e z k l a s y I n p u t S t r e a m t o :
7 - 4
J a c e k R u m i Ds k i - J z y k J A V A
J a c e k R u m i Ds k i - J z y k J A V A R o z d z i a B 7
J a c e k R u m i Ds k i - J z y k J A V A
J a c e k R u m i Ds k i - J z y k J A V A
B y t e A r r a y I n p u t S t r e a m - d e f i n i u j e p o l e b u f o r a b a j t ó w ,
F i l e I n p u t S t r e a m - u m o |l i w i a o d c z y t p l i k u ( s t r u m i e D z p l i k u ) ,
F i l t e r I n p u t S t r e a m - p r a k t y c z n i e k o p i u j e f u n k c j o n a l n o [ I n p u t S t r e a m c e l e m j e j
w y k o r z y s t a n i a w k l a s a c h d z i e d z i c z c y c h z F i l t e r I n p u t S t r e a m w p r o w a d z a j c
d o d a t k o w e n a r z d z i a d o o b s Bu g i s e k w e n c j i b a j t ó w :
B u f f e r e d I n p u t S t r e a m , C h e c k e d I n p u t S t r e a m , D a t a I n p u t S t r e a m , D i g e s t I n p u t S t r e a m ,
I n f l a t e r I n p u t S t r e a m , L i n e N u m b e r I n p u t S t r e a m , P r o g r e s s M o n i t o r I n p u t S t r e a m ,
P u s h b a c k I n p u t S t r e a m
n p . D a t a I n p u t S t r e a m u m o |l i w i a p r o g r a m o w i o d c z y t d a n y c h z g o d n i e z p o d s t a w o w y m i
f o r m a t a m i z d e f i n i o w a n y m i w J a v i e ( c h a r , i n t , l o n g , d o u b l e , i t p . ) .
O b j e c t I n p u t S t r e a m - d o k o n u j e r e k o n s t r u k c j i o b i e k t u z s e k w e n c j i b a j t ó w
( s t w o r z o n e j w w y n i k u s e r i a l i z a c j i i z a p i s u m e t o d w r i t e O b j e c t ( ) k l a s y
O b j e c t O u t p u t S t r e a m ) ,
P i p e d I n p u t S t r e a m - d o k o n u j e p r z e p By w u d a n y c h d o o d p o w i a d a j c e m u o b i e k t o w i
k l a s y P i p e d O u t p u t S t r e a m , k t ó r y j e s t p o d a w a n y j a k o a r g u m e n t k o n s t r u k t o r a k l a s y
P i p e d I n p u t S t r e a m ,
S e q u e n c e I n p u t S t r e a m , d o k o n u j e l o g i c z n e j k o n c e n t r a c j i s t r u m i e n i w j e d e n ,
S t r i n g B u f f e r I n p u t S t r e a m - t w o r z y s t r u m i e D z p o d a n e g o Ba Dc u c h a z n a k ó w ( o b i e k t u
S t r i n g ) - k l a s a t a j e s t o z n a c z o n a w J D K 1 . 2 j a k o d e p r e c a t e d p o n i e w a | n i e
d o k o n u j e w Ba [c i w e j k o n w e r s j i z n a k ó w n a b a j t y . P o s t u l u j e s i j e j z a s t p i e n i e k l a s
S t r i n g R e a d e r .
7 . 2 . 2 O b s Bu g a w e j [c i a k l a s a O u t p u t S t r e a m
W p o d o b n y s p o s ó b , n i e m n i e j d o t y c z c y o b s Bu g i w y j [c i a , d e f i n i o w a n e s k l a s y
d z i e d z i c z c e z k l a s y O u t p u t S t r e a m . K l a s a t a j e s t r ó w n i e | k l a s a b s t r a k c y j n z j e d y n
a b s t r a k c y j n m e t o d w r i t e ( ) z a p i s u j c a k o l e j n y b a j t d o s t r u m i e n i a . P o d s t a w o w e
m e t o d y t e j k l a s y t o :
v o i d c l o s e ( ) - z a m k n i c i e s t r u m i e n i a ,
v o i d f l u s h ( ) - p r z e s u w a b u f o r o w a n e d a n e d o s t r u m i e n i a ,
v o i d w r i t e ( b y t e [ ] b , i n t o f f , i n t l e n ) ,
v o i d w r i t e ( b y t e [ ] b ) - z a p i s u j d a n e z t a b l i c y b d o s t r u m i e n i a w y j [c i a .
K l a s y d z i e d z i c z c e z k l a s y O u t p u t S t r e a m t o :
" B y t e A r r a y O u t p u t S t r e a m ,
" F i l e O u t p u t S t r e a m ,
" F i l t e r O u t p u t S t r e a m ,
" O b j e c t O u t p u t S t r e a m ,
" P i p e d O u t p u t S t r e a m .
K l a s y t e o b s Bu g u j s t r u m i e D w y j [c i o w y a i c h f u n k c j o n a l n o [ j e s t a n a l o g i c z n a d o
o m a w i a n y c h w y |e j w e r s j i o b s Bu g u j c y c h w e j [c i e .
P r z y k Ba d 7 . 1 :
/ / E c h o . j a v a
i m p o r t j a v a . i o . * ;
7 - 5
J a c e k R u m i Ds k i - J z y k J A V A
J a c e k R u m i Ds k i - J z y k J A V A R o z d z i a B 7
J a c e k R u m i Ds k i - J z y k J A V A
J a c e k R u m i Ds k i - J z y k J A V A
p u b l i c c l a s s E c h o {
p u b l i c s t a t i c v o i d m a i n ( S t r i n g a r g s [ ] ) {
b y t e b [ ] = n e w b y t e [ 1 0 0 ] ;
t r y {
S y s t e m . i n . r e a d ( b ) ;
S y s t e m . o u t . w r i t e ( b ) ;
S y s t e m . o u t . f l u s h ( ) ;
} c a t c h ( I O E x c e p t i o n i o e ) {
S y s t e m . o u t . p r i n t l n ( " B Bd w e j [c i a - w y j [c i a " ) ;
}
}
} / / k o n i e c p u b l i c c l a s s E c h o
P o w y |s z y p r o g r a m u k a z u j e p r o s t e z a s t o s o w a n i e s t r u m i e n i . P o c z t k o w o
w y k o r z y s t y w a n y j e s t i s t n i e j c y s t r u m i e D w e j [c i a S y s t e m . i n w c e l u w c z y t a n i a d a n y c h
z e s t a n d a r d o w e g o u r z d z e n i a w e j [c i a ( k l a w i a t u r a ) . D a n e s w c z y t y w a n e a |
w c i [n i t y z o s t a n i e k l a w i s z E n t e r ( k o n i e c d a n y c h ) . W c z y t a n e z n a k i s z a p i s y w a n e d o
b u f o r a b , k t ó r y t o j e s t n a s t p n i e w y k o r z y s t y w a n y d o p o b r a n i a d a n y c h c e l e m w y s Ba n i a
i c h d o s t r u m i e n i a w y j [c i a . P r z y j t y m w p o w y |s z y m p r z y k Ba d z i e s t r u m i e D w y j [c i a t o
S y s t e m . o u t . W a r t o z a u w a |y , |e w y k o r z y s t a n o m e t o d y w r i t e ( ) o r a z f l u s h ( ) d o z a p i s u
d a n y c h . W e f e k c i e d z i a Ba n i a p r o g r a m u o t r z y m u j e m y e c h o ( p o w t ó r z e n i e ) n a p i s u
w p r o w a d z o n e g o z k l a w i a t u r y .
K o l e j n y p r z y k Ba d u k a z u j e m o |l i w o [ d o s t p u d o p l i k u .
P r z y k Ba d 7 . 2 :
/ / Z a p i s z P l a n y . j a v a :
i m p o r t j a v a . i o . * ;
c l a s s P l a n y i m p l e m e n t s S e r i a l i z a b l e {
p r i v a t e i n t l i c z b a L e g i o n o w ;
p r i v a t e i n t l i c z b a D z i a l ;
p r i v a t e S t r i n g h a s l o ;
p u b l i c v o i d u s t a w ( i n t l L , i n t l D , S t r i n g h ) {
t h i s . l i c z b a L e g i o n o w = l L ;
t h i s . l i c z b a D z i a l = l D ;
t h i s . h a s l o = h ;
}
p u b l i c v o i d w y s w i e t l ( ) {
S y s t e m . o u t . p r i n t l n ( " L i c z b a l e g i o n ó w = " + l i c z b a L e g i o n o w ) ;
S y s t e m . o u t . p r i n t l n ( " L i c z b a d z i a B = " + l i c z b a D z i a l ) ;
S y s t e m . o u t . p r i n t l n ( " H a s Bo d o s t p u = " + h a s l o ) ;
}
} / / k o n i e c c l a s s P l a n y
c l a s s N a d a w c a e x t e n d s T h r e a d {
7 - 6
J a c e k R u m i Ds k i - J z y k J A V A
J a c e k R u m i Ds k i - J z y k J A V A R o z d z i a B 7
J a c e k R u m i Ds k i - J z y k J A V A
J a c e k R u m i Ds k i - J z y k J A V A
p r i v a t e S t r i n g p l i k D a n y c h ;
Z a p i s z P l a n y z p ;
N a d a w c a ( S t r i n g s , Z a p i s z P l a n y z p ) {
t h i s . p l i k D a n y c h = s ;
t h i s . z p = z p ;
s e t N a m e ( " N a d a w c a " ) ;
}
p u b l i c v o i d r u n ( ) {
b y t e b [ ] = n e w b y t e [ 1 0 0 ] ;
t r y {
S y s t e m . o u t . p r i n t l n ( " P o d a j h a s Bo " ) ;
S y s t e m . i n . r e a d ( b ) ;
S t r i n g s = n e w S t r i n g ( b ) ;
S y s t e m . o u t . p r i n t l n ( " Z a p i s u j d o p l i k u " ) ;
P l a n y p = n e w P l a n y ( ) ;
p . u s t a w ( 1 , 2 , s ) ;
O b j e c t O u t p u t S t r e a m o = n e w O b j e c t O u t p u t S t r e a m ( n e w
F i l e O u t p u t S t r e a m ( p l i k D a n y c h ) ) ;
o . w r i t e O b j e c t ( p ) ;
o . f l u s h ( ) ;
o . c l o s e ( ) ;
} c a t c h ( I O E x c e p t i o n i o e ) {
S y s t e m . o u t . p r i n t l n ( " B Bd w e j [c i a - w y j [c i a " ) ;
}
z p . u s t a w ( ) ;
}
} / / k o n i e c c l a s s N a d a w c a
c l a s s O d b i o r c a e x t e n d s T h r e a d {
p r i v a t e S t r i n g p l i k D a n y c h ;
Z a p i s z P l a n y z p ;
O d b i o r c a ( S t r i n g s , Z a p i s z P l a n y z p ) {
t h i s . p l i k D a n y c h = s ;
t h i s . z p = z p ;
s e t N a m e ( " O d b i o r c a " ) ;
}
p u b l i c v o i d r u n ( ) {
w h i l e ( ( ! ( t h i s . i s I n t e r r u p t e d ( ) ) ) &