¿Cómo escribir datos binarios grandes rápidamente en Java? [duplicar]

Usa la ByteBufferclase de nio :

public static void writeBinarySTL(Triangle t, ByteBuffer buf) {
    buf.putFloat((float)t.normal.x);
    // ...
}

// Create a new path to your file on the default file system.
Path filePath = Paths.get("file.txt");

// Open a channel in write mode on your file.
try (WritableByteChannel channel = Files.newByteChannel(filePath, StandardOpenOption.WRITE)) {
    // Allocate a new buffer.
    ByteBuffer buf = ByteBuffer.allocate(8192);

    // Write your triangle data to the buffer.
    writeBinarySTL(t, buf);

    // Flip from write mode to read mode.
    buf.flip();

    // Write your buffer's data.
    channel.write(buf);
}

Tutorial de ByteBuffer

ByteBuffer javadoc

WriteableByteChannel javadoc

Archivos javadoc

EDITAR:

public static boolean tryWriteBinarySTL(Triangle t, ByteBuffer buf) {
    final int triangleBytes = 50; // set this.
    if (buf.remaining() < triangleBytes) {
       return false;
    }

    buf.putFloat((float)t.normal.x);
    // ...
    return true;
}

// Create a new path to your file on the default file system.
Path filePath = Paths.get("file.txt");

// Open a channel in write mode on your file.
try (WritableByteChannel channel = Files.newByteChannel(filePath, StandardOpenOption.WRITE)) {
    // Allocate a new buffer.
    ByteBuffer buf = ByteBuffer.allocate(8192);

    // Write your triangle data to the buffer.
    for (Triangle triangle : triangles) {
        while (!tryWriteBinarySTL(triangle, buf) ) {
            // Flush buffer.
            buf.flip();
            while (buf.hasRemaining()) {
                channel.write(buf);
            }

            buf.flip();
        }
    }

    // Write remaining.
    buf.flip();
    channel.write(buf);
}
Respuesta 1

Si hay una manera fácil de amortiguar

Ahi esta:

DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(...));
Respuesta: 2

las dos formas que sé para obtener la URL de la página son: 1.a través de la clase de applet: Applet.getDocumentBase () 2.a través de la biblioteca de JavaScript de netscape: JSObject.getWindow (this) .eval ("location.href") Primero, ...

En este bonito artículo sobre JMS, Bruce Snyder (Autor de "ActiveMQ en acción") menciona: [una] de las opciones para implementar un escucha de mensajes para usar con Spring DMLC es usar javax.jms ...

Me gustaría descubrir todas las implementaciones de una interfaz durante el tiempo de ejecución en una aplicación Java y cargar esas clases dinámicamente desde archivos JAR que el usuario puede agregar a una carpeta. Es un sistema enchufable, ...

Necesito ejecutar este sql: select * from (select nt. *, Rank () over (partición por feld0 orden por feld1 desc) como clasificación de (seleccione bla de prueba) nt) donde clasificación <3 orden por 1,2. ..