RandomAccessFile utiliza múltiples subprocesos para leer archivos y luego fusionarlos en un solo archivo para su almacenamiento. . . . Cómo lograrlo. . .
¿Importar? Java io *;
/**
*?Creado? ¿Qué usar? ¿IntelliJ? idea.
*?Usuario:? Gestión
*?Fecha:? 13-8-7
*?Hora:? 10:58 am
* ¿Adónde ir? ¿Cambiar? ¿este? ¿plantilla? ¿usar? ¿documento? |?Configuración? |?Archivo? plantilla.
*/
¿Público? ¿clase? ¿Prueba de archivo de acceso aleatorio? {
¿Público? ¿Electricidad estática? ¿Vacío? main(string?[]?args){
prueba {
int? Tamaño del archivo;? //Tamaño del archivo de descripción
int? ¿Pos de inicio? //Comenzar a escribir la posición del archivo
¿Hilo? []?¿Hilo? =?¿Nuevo? hilo[5];? //Definir una matriz de subprocesos
¿Archivo? ¿documento? =?¿Nuevo? file("E:\\baby\\info.txt");//El archivo a copiar
FileInputStream? ¿Fis? =?¿Nuevo? FileInputStream(archivo);? //Archivo cargado en
¿Tamaño de archivo? =?(int)? archivo .length()/5 1;? //Obtiene el tamaño unitario del archivo escrito por un solo hilo.
//Utiliza un bucle for para practicar el inicio de subprocesos múltiples.
for(int?I = 0;i lt5;i){
PosInicio? =?I *Tamaño del archivo; //Posición inicial de escritura del hilo
Subproceso[i]? =?¿Nuevo? Thread(new? DownloadFile(fis, new? RandomAccessFile("E:\\baby\\info_copy.txt", "rw"), startPos, fileSize);
Thread[i].
start();
}
}catch(Exception?e){
e . printstacktrace();
}
}
}
¿Clase? ¿Descargar un archivo? ¿Utensilios? Ejecutable {
¿Privado? ¿FileInputStream? Sí;? //Flujo de entrada de archivos
¿Privado? ¿Archivo de acceso aleatorio? Real Fuerza Aérea;? //fileoutputstream
¿Privado? int? startPos
¿Privado? int? fileUnitSize
¿Privado? int? Longitud;
¿Público? DownloadFile(FileInputStream? Sí, RandomAccessFile? rAF, int? startPos, int? fileUnitSize) {
¿Esto es? =?Sí;
¿Esta, la Royal Air Force? =?RAF;
esta.startPos? =?startPos
this.fileUnitSize? =?fileUnitSize
}
@Override
¿Público? ¿Vacío? correr()? {
Pruebe {
es . skip(iniciar pos);
RAF buscar(iniciar pos); []?¿buffer? =?¿Nuevo? byte[1024];
int? ¿hasbyte? =?0;
while((hasbyte=is.read(buffer))!=-1){
rAF.write(buffer, 0, tiene byte); p>p>
¿Longitud? = tiene byte;
if(lengthltfileUnitSize){
return;
}
}
} captura (IOException?e){
e . printstacktrace();
}?Finalmente {
system out . p>
Pruebe {
RAF . close();
}catch(IOException?e){
e . p>
}
}
}
}