List of usage examples for io.vertx.core.file AsyncFile read
@Fluent AsyncFile read(Buffer buffer, int offset, long position, int length, Handler<AsyncResult<Buffer>> handler);
From source file:examples.FileSystemExamples.java
License:Open Source License
public void asyncFileRead() { Vertx vertx = Vertx.vertx();//from www .j a v a2s .co m vertx.fileSystem().open("target/classes/les_miserables.txt", new OpenOptions(), result -> { if (result.succeeded()) { AsyncFile file = result.result(); Buffer buff = Buffer.buffer(1000); for (int i = 0; i < 10; i++) { file.read(buff, i * 100, i * 100, 100, ar -> { if (ar.succeeded()) { System.out.println("Read ok!"); } else { System.err.println("Failed to write: " + ar.cause()); } }); } } else { System.err.println("Cannot open file " + result.cause()); } }); }
From source file:org.entcore.common.storage.impl.GridfsStorage.java
License:Open Source License
@Override public void writeFsFile(final String id, final String filePath, final Handler<JsonObject> handler) { if (id == null || id.trim().isEmpty() || filePath == null || filePath.trim().isEmpty() || filePath.endsWith(File.separator)) { handler.handle(new JsonObject().put("status", "error").put("message", "invalid.parameter")); return;/*w ww . j ava 2 s . c om*/ } final String filename = filePath.contains(File.separator) ? filePath.substring(filePath.lastIndexOf(File.separator) + 1) : filePath; final String contentType = getContentType(filePath); vertx.fileSystem().props(filePath, new Handler<AsyncResult<FileProps>>() { @Override public void handle(AsyncResult<FileProps> event) { if (event.succeeded()) { final long fileSize = event.result().size(); vertx.fileSystem().open(filePath, new OpenOptions(), new Handler<AsyncResult<AsyncFile>>() { @Override public void handle(AsyncResult<AsyncFile> event) { if (event.succeeded()) { final AsyncFile asyncFile = event.result(); int nbChunks = (int) Math.ceil(fileSize / BUFFER_SIZE); final Handler[] handlers = new Handler[nbChunks + 1]; handlers[handlers.length - 1] = new Handler<AsyncResult<Buffer>>() { @Override public void handle(AsyncResult<Buffer> asyncResult) { if (asyncResult.failed()) { handler.handle(new JsonObject().put("status", "error").put("message", asyncResult.cause().getMessage())); return; } Buffer buff = asyncResult.result(); saveChunk(id, buff, handlers.length - 1, contentType, filename, fileSize, handler); asyncFile.close(); } }; for (int i = nbChunks - 1; i >= 0; i--) { final int j = i; handlers[i] = new Handler<AsyncResult<Buffer>>() { @Override public void handle(AsyncResult<Buffer> asyncResult) { if (asyncResult.failed()) { handler.handle(new JsonObject().put("status", "error") .put("message", asyncResult.cause().getMessage())); return; } Buffer buff = asyncResult.result(); saveChunk(id, buff, j, contentType, filename, fileSize, new Handler<JsonObject>() { @Override public void handle(JsonObject message) { if ("ok".equals(message.getString("status"))) { asyncFile.read(Buffer.buffer((int) BUFFER_SIZE), 0, (j + 1) * BUFFER_SIZE, (int) BUFFER_SIZE, handlers[j + 1]); } else { handler.handle(message); } } }); } }; } asyncFile.read(Buffer.buffer((int) BUFFER_SIZE), 0, 0, (int) BUFFER_SIZE, handlers[0]); } else { handler.handle(new JsonObject().put("status", "error").put("message", event.cause().getMessage())); } } }); } else { handler.handle( new JsonObject().put("status", "error").put("message", event.cause().getMessage())); } } }); }