  @Override
     public FSDataInputStream open(Path path, int i) throws IOException {
        FileStatus fs = getFileStatus(path);
        return new FSDataInputStream(new S3NFsInputStream(this.s3Client, this.configuration, this.bucket, pathToKey(path), fs.getLen()));
     }
 
     @Override
     public FSDataOutputStream create(Path path, FsPermission fsPermission, boolean b, int i, short i2, long l, Progressable progressable) throws IOException {
         String key = pathToKey(path);
        return new FSDataOutputStream(new S3NFsOutputStream(this.s3Client, this.configuration, this.bucket, key), null);
     }
 
     @Override
     public FSDataOutputStream append(Path path, int i, Progressable progressable) throws IOException {
         throw new IOException("Append functionality is not supported");
     }
 
     @Override
     public boolean rename(Path path, Path path2) throws IOException {
         throw new IOException("Rename is copy followed by delete");
     }
 
     @Override
     public boolean delete(Path path, boolean b) throws IOException {
 
         FileStatus fs = getFileStatus(path);
 
         if(b){
             throw new PathIOException("Recursive delete is not supported");
         }
 
         if(!fs.isDirectory()){
             s3Client.deleteObject(this.bucket, pathToKey(path));
         }
 
         return false;
     }
 
 
 
