Hadoop learning-seek relocation stream-day04
Import java.io.ByteArrayOutputStream
Import java.io.FileInputStream
Import java.io.FileOutputStream
Import java.io.InputStream
Import java.net.URL
Import org.apache.hadoop.conf.Configuration
Import org.apache.hadoop.fs.FSDataInputStream
Import org.apache.hadoop.fs.FSDataOutputStream
Import org.apache.hadoop.fs.FileSystem
Import org.apache.hadoop.fs.FsUrlStreamHandlerFactory
Import org.apache.hadoop.fs.Path
Import org.apache.hadoop.io.IOUtils
Import org.junit.Test
Public class seek {
/ * *
* seek operation through API
*
* @ author Administrator
*
* [hadoop@hadoop01 ~] $hdfs dfs-chmod-R aquiw / user/hadoop
* [hadoop@hadoop01 ~] $hdfs dfs-ls-R /
*
*
, /
@ Test
Public void seekfile () throws Exception {
/ / create configuration objects, which have a default loading order, first from core-default.xml to the files in the src directory, here
/ / We have given
Configuration conf = new Configuration ()
/ / the distributed file system fs is created through the configuration object of conf. By default, it is the local file system if no file is specified.
FileSystem fs = FileSystem.get (conf)
/ / define a string of URL
String file = "hdfs://hadoop01:9000/user/hadoop/data2/kaola.jpg"
/ / construct a path object from a string of URL
Path path = new Path (file)
FSDataInputStream in = fs.open (path)
/ / streaming copy
IOUtils.copyBytes (in, new FileOutputStream ("E:/kaola1.jpg"), 1024, false)
/ / relocate to the starting point of the file. Only FSDataInputStream implements the seek interface, but FSDataOutputStream does not.
In.seek (0)
IOUtils.copyBytes (in, new FileOutputStream ("E:/kaola2.jpg"), 1024, true)
}
}