package net.codjo.dataprocess.server.handlercommand.fmanager; import net.codjo.mad.server.handler.HandlerCommand; import net.codjo.mad.server.handler.HandlerException; import java.io.FileInputStream; import java.io.IOException; import java.sql.SQLException; import sun.misc.BASE64Encoder; /** * */ public class DpFdownloadCommand extends HandlerCommand { @Override public CommandResult executeQuery(CommandQuery query) throws HandlerException, SQLException { StringBuilder response = new StringBuilder(); String filePath = query.getArgumentString("filePath"); int block = query.getArgumentInteger("block"); int blockSize = query.getArgumentInteger("blockSize"); BASE64Encoder base64Encoder = new BASE64Encoder(); try { FileInputStream fis = new FileInputStream(filePath); long skipped = fis.skip(block * blockSize); response.append(skipped).append("\n"); byte[] toRead = new byte[blockSize]; int realReader = fis.read(toRead); response.append(realReader).append("\n"); response.append(base64Encoder.encode(toRead)); fis.close(); } catch (IOException ex) { throw new HandlerException( ex.getLocalizedMessage() + " (filePath = " + filePath + ", block = " + block + ", blockSize = " + blockSize + ") ", ex); } return createResult(response.toString()); } }