public void copyToLocalFile ( Path src , Path dst , boolean copyCrc ) throws IOException { if ( ! fs . isDirectory ( src ) ) { // source is a file fs . copyToLocalFile ( src , dst ) ; FileSystem localFs = getLocal ( getConf ( ) ) . getRawFileSystem ( ) ; if ( localFs . isDirectory ( dst ) ) { dst = new Path ( dst , src . getName ( ) ) ; } dst = getChecksumFile ( dst ) ; if ( localFs . exists ( dst ) ) { //remove old local checksum file localFs . delete ( dst , true ) ; } Path checksumFile = getChecksumFile ( src ) ; if ( copyCrc && fs . exists ( checksumFile ) ) { //copy checksum file fs . copyToLocalFile ( checksumFile , dst ) ; } } else { FileStatus [ ] srcs = listStatus ( src ) ; for ( FileStatus srcFile : srcs ) { copyToLocalFile ( srcFile . getPath ( ) , new Path ( dst , srcFile . getPath ( ) . getName ( ) ) , copyCrc ) ; } } }
The src file is under FS and the dst is on the local disk . Copy it from FS control to the local dst name . If src and dst are directories the copyCrc parameter determines whether to copy CRC files .