Red de conocimiento informático - Consumibles informáticos - (Puntuación alta) ¿Cómo fusionar varios archivos Java de un teléfono móvil en un solo archivo Java?

(Puntuación alta) ¿Cómo fusionar varios archivos Java de un teléfono móvil en un solo archivo Java?

Código fuente de Java 2007/02/2105: 38 a. m. Corte de archivo de clase pública para la herramienta de fusión de fragmentos.

/*cl_tl*/

{

Shell privado;

Pantalla privada;

Texto privado txtSourceFile

Texto privado txtNewFilePath

Texto privado txtFileSize

Botón privado btnChooseFile

Botón privado btnChoosePath

Botón privado btnCut

Botón privado btnUnionFiles

Botón privado btnUp

Botón privado btnDown

Botón privado btnClear

Botón privado btnClearAll

Botón privado btnUnion

Tabla privada tblFileList

Archivo privado sourceFile = null/*archivo fuente*/

Archivo privado[ ] new File = null /*Archivo generado después de la división*/

recuento de archivos int privados = 0 /*Número de archivos divididos en */

tamaño de archivo int privado = 0; *Tamaño del bloque del archivo de partición*/

Cadena privada strSourceFile = null/*Ruta y nombre del archivo fuente*/

Cadena privada strNewFilePath = null/*Ruta de almacenamiento del archivo dividido* /

Public static void main(String[] args)

{

Display Display = new Display();

elemento de corte de archivo = new corte de archivo();

item .crea shell();

Y (!Item.shell.isDisposed())

{

if (!display.readAndDispatch())

mostrar .sleep();

}

dispose();

}

/*fn_hd

*rem:Crear formulario

*aut:

*Registro:2005-11-24

*/

Vacío privado createShell()

/*fn_tl*/

{

Shell =newshell( monitor, swt. MIN);

shell.setBounds(300, 250, 500, 330);

Shell.setText("División y fusión de archivos");

GridLayout diseño de shell = new GridLayout();

diseño de shell num columnas = 3;

diseño de conjunto de shell(diseño de shell);

crear widgets( ). ;

shell . open();

}

/**fn_hd

*rem: Agrega controles al formulario.

*per:

*aut:

*Registro: 2005-11-24

*/

private void createWidgets()

/*fn_tl*/

{

etiqueta final lblNull0 = nueva etiqueta(shell,swt.None);

GridData gd0 = new GridData();

gd0 . intervalo horizontal = 3

LBL null 0 . etiqueta lblSourceFile = nueva etiqueta(shell,swt.none);

LblSourceFile.setText("Documento fuente"

GridData gd2 = nuevo GridData(GridData.fill_level);

txtSourceFile = nuevo texto(shell, swt. border);

txtsourcefile . setlayoutdata(gd2);

btnChooseFile = nuevo botón(shell, swt. push);

btnChooseFile.setText(" .. ");

Etiqueta final lblPath = new Tag(shell, swt. Ninguno); ruta de almacenamiento");

txtNewFilePath = new text(shell, swt.border);

GridData gd3 = new GridData(GridData.fill_horizontal);

p >

txtnewfilepath.setlayoutdata(gd3);

btnChoosePath = NewButton(shell, SWT. Push);

btnChoosePath.setText(" .. ");

p>

Etiqueta final lblSize = nueva etiqueta(shell,swt.none

LblSize.setText("Tamaño de bloque (KB)"); = nuevo texto (shell, SWT.Border);

GridData gd7 = nuevo GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);

txtfilesize.setlayoutdata(gd7);

btnCut = nuevo botón(shell, swt. push);

GridData gd4 = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);

BTN cut.setlayoutdata(gd4);

BtnCut setText("Iniciar segmentación. ");

Etiqueta final lbl1 = nueva etiqueta(Shell, SWT. Ninguna);

GridData gd8 = new GridData();

gd8. intervalo horizontal = 3;

LBL 1 . setlayoutdata(gd8);

Lbl1.setText("Lista de archivos a fusionar"); (shell,SWT.Border);

GridData gd1 = new GridData(GridData.

FILL _ BOTH);

GD 1 . intervalo horizontal = 2;

tblfilelist .setlayoutdata(GD 1); SWT.none);

GridLayout com diseño = nuevo GridLayout();

com.set diseño(com diseño);

etiqueta final lblNote = nueva etiqueta (Shell, SWT. Ninguno);

datos de cuadrícula = nuevos datos de cuadrícula();

datos horizontales =

lblNote.setLayoutData(. data);

LblNote.setText("Consejo: preste atención al orden de combinación de archivos");

btnUnionFiles = Botón nuevo (com, SWT. Push

BtnUnionFiles.setText("Seleccionar archivo");

btnUp = Nuevo botón(com, SWT. Push);

Bt settext("mover hacia arriba") ;

p>

Bt NUP .set enable(false);

btnDown = nuevo botón (com, SWT. push

BtnDown). setText("move down");

BTN down .set enable(false);

btnClear = Nuevo botón (com, SWT. push); BTN clear . settext(" eliminar " );

BTN clear .falso

btnClearAll = Nuevo botón (com, SWT. push ). p>BtnClearAll.setText("Lista vacía");

btnUnion = nuevo botón (com, swt. push);

BtnUnion.setText("Iniciar fusión"); p>

btnCut.addSelectionListener (Nuevo adaptador de selección()

//Agregar monitor "Iniciar división"

{

widget de vacío públicoSelected(evento de selección )

{

cutButtonEvent();

}

});

btnchoosefile . SelectionAdapter()

//Añadir monitor de selección (archivo fuente)

{

widget de vacío públicoSelected(evento de selección)

{

diálogo de archivo FD abierto = nuevo diálogo de archivo(shell,SWT.

open);

cadena strFileName = FD open();

if (strFileName!=null)

{

txtsourcefile. . settext(strFileName);

txtnewfilepath . settext(FD open . getfilterpath());

txtfilesize();

}

});

btnchoosepath . addelectionlistener(nuevo adaptador de selección()

//Agregar monitor de selección (ruta de almacenamiento de archivos divididos)

p>

{

widget de vacío públicoSelected(evento de selección)

{

DirectoryDialog dirDia = nuevo diálogo de directorio (shell);

p>

string strfile dir = dirdia open();

if (strFileDir!=null)

{

txtnewfilepath (. strFileDir) ;

txtfilesize . setfocus();

}

}

});

btnUp .addSelectionListener (Nuevo adaptador de selección()

//Agregar monitor de "subir"

{

widget de vacío públicoSelected(evento de selección)

{

//int[]índices de elementos = tblfilelist .getselectionindices();

int índice de elementos = tblfilelist();

if (. itemIndex == 0)

{

tblfilelist .

Regresar

}

//Intercambia el contenido de las dos líneas de la lista

string strTemp = tblfilelist.getitem(item index). getText();

tblFileList.getItem(itemIndex). setText(tblFileList.getItem(

itemIndex - 1).getText());

tblfilelist.getitem(índice de elemento-1).

setText(strTemp);

//Establecer enfoque

tblfilelist. establecer selección(índice de elemento-1);

tblfilelist();

}

});

btnDown.addSelectionListener(nuevo adaptador de selección()

//Añadir monitor "bajar"

{

widget de vacío públicoSelected(evento de selección)

{

//int[]item indexes = tblfilelist getselectionindices();

int índice de elemento = tblfilelist . getselectionindex();

if(índice de elemento = = tblfilelist . getitemcount()-1)

{

tblfilelist.setfocus();

Return;

}

//Intercambia el contenido de las dos líneas de la lista

cadena strTemp = tblfilelist.getitem(item index).getText();

tblFileList.getItem(itemIndex).setText(tblFileList.getItem(

itemIndex + 1).getText()) ;

tblfilelist . getitem(índice de elemento+1).

setText(strTemp);

//Establecer foco

tblfilelist . establecer selección(índice de elemento+1);

tblfilelist();

}

});

btnClear.addSelectionListener(new SelectionAdapter()

//Agregar monitor "Eliminar"

{

widget de vacío públicoSelected(evento de selección)

{

índice de elemento int = tblfilelist . getselectionindex();

tblfilelist . eliminar (índice de elemento);

Bt NUP establecido habilitado (falso);

BTN establecido habilitado (falso); (falso);

}

});

btnclearal . addselectionlistener(new SelectionAdapter()

// Agregar "lista vacía". " monitor

{

widget público vacío seleccionado (evento de selección)

{

tblfilelist. eliminar todo( );

Bt NUP .establecido habilitado(falso);

BTN abajo .establecido habilitado(falso); BTN establecido habilitado(falso); >}

});

txtfilesize . addelectionlistener(new selected adaptor()

//Agregue el cuadro de texto "Tamaño de bloque", ingrese Enter Monitor.

{

widget public voidDefaultSelected(evento de selección)

{

cutButtonEvent();

}

});

btnunionfiles . addelectionlistener(nuevo adaptador de selección()

//Agregar monitor de "archivo de selección"

{

widget de vacío públicoSelected(evento de selección)

{

diálogo de archivo FD = diálogo de archivo nuevo (shell, SWT. Más);

fd.setFilterExtensions(nueva cadena[]{"*.dat", "*.

*"});

if (fd.open()!=null)

{

cadena[]strFiles = FD . get nombres de archivos();

string strfile path = FD . getfilterpath();

//strUnionFilePath = new String[strfiles length]; i<strFiles.lengthi++)

{

//strUnionFilePath[I]= FD . getfilterpath();

elemento de tabla = nuevo elemento de tabla(tblFileList, SWT . Ninguno);

elemento . settext(ruta del archivo str+" \ \ "+strFiles[I]); >}

});

btnUnion.addSelectionListener(nuevo adaptador de selección()

//Agregar monitor "Iniciar fusión"

{

widget de vacío públicoSelected(evento de selección)

{

if(tblfilelist . getitemcount()= = 0)

{

Regresar;

}

Cambiar(unionFiles())

{

Caso 1:

ShowMessage("Exitoso", "¡Fusión completada!",

SWT. OK | SWT. Icon_Message);

tblfilelist eliminar todo ();

Bt NUP . establecer habilitado(falso);

BTN abajo establecer habilitado(falso);

BTN establecer habilitado(falso);

Pausa;

Caso 1:

ShowMessage ("Error", "¡El archivo no existe!",

SWT. OK | SWT.ICON_ERROR) ;

Pausa;

Caso 2:

Pausa;

Predeterminado:

p>

Mostrar Mensaje (" Error ", "¡Se produjo un error y falló la combinación de archivos! ",

SWT. OK | SWT.

ICON_ERROR);

}

}

});

tblfilelist . addselectionlistener(nuevo adaptador de selección()

//Agregar monitor de elementos a la lista seleccionada

{

widget de vacío públicoSelected(evento de selección)

{

Bt NUP . establecer habilitado (verdadero);

BTN abajo . >

});

}

/**fn_hd

*rem: Mostrar cuadro de mensaje

*Registro:2005 -11-24

*/

privado int mostrar mensaje(String strText, String strMessage, int i)

{/*fn_tl */

MessageBox msgBox = nuevo MessageBox(shell, I);

msgbox . settext(strText

msgbox set message(strMessage);

Return msgbox . open();

}

/**fn_hd

*rem: haga clic en el botón "Dividir" para activar la respuesta al incidente.

*Registro:2005-11-24

*/

Private void cutButtonEvent()

/*fn_tl*/

{

strSourceFile = txtsourcefile . trim();

strNewFilePath = txtnewfilepath.gettext(). trim();

if(strsourcefile . igual(" " | | strnewfilepath . igual(" ")

{

ShowMessage ("prompt "," Ingrese la ruta del archivo fuente y \n\ndivida el archivo ",

SWT. OK | SWT. Icon_Information);

Volver;

}

Pruebe

{

fileSize = integer . parse int(txt fileSize . gettext());

fileSize * = 1024;

if(tamaño de archivo & lt= 0)

{

ShowMessage ("Error", "¡El tamaño del bloque es un entero positivo!",

SWT.OK | SWT.ICON_ERROR);

Regresar;

}

Capturar (Excepción e)

{

ShowMessage ("Error ", "¡Ingrese un número en el cuadro de tamaño de bloque!",

SWT. OK | SWT.ICON_ERROR);

Regresar ;

}

Switch(cutFile())

{

Caso 1:

Mostrar mensaje (" Prompt", "¡División completada!", SWT. OK |

SWT.

icon_info);

txtsourcefile . settext(" ");

txtnewfilepath . settext(" "); p>

Roto;

Caso 1:

ShowMessage ("Error", "¡El archivo fuente no existe o la ruta de almacenamiento no existe!",

SWT.OK | SWT.ICON_ERROR);

Interrupción;

Predeterminado:

ShowMessage("Error desconocido", Partición "Archivo" falló ",

SWT.OK | SWT.ICON_ERROR);

}

}

/*fn_hd

*rem: implementación de segmentación de archivos

*per: 1 se devuelve correctamente, -1 se devuelve si no se puede encontrar el archivo y 0 se devuelve en otros casos.

*exp:IOException

*aut:

*Registro: 2005-11-22, creado

*Registro: 2005 - 11-24, modificado.

*/

Privado int cutFile()

/*fn_tl*/

{

sourceFile = Nuevo archivo (strSourceFile);

recuento de archivos =(int)(archivo fuente . length()/fileSize);

if(archivo fuente . length()% fileSize!= 0 )

{

filecount++;

}

newFile = nuevo archivo [recuento de archivos];

Probar

{

int recuento = 0;

int I = 0;

byte[] bueff = nuevo byte[tamaño de archivo] ;

FileOutputStream out = null

archivo inputstream in = nuevo archivo inputstream(archivo fuente);

for(I = 0;i<newFile.lengthi++ )

{

nuevoArchivo[i] = nuevoArchivo(strNewFilePath,

i + archivofuente.getName() + ".

dat");

}

I = 0;

mientras ((count = in.read(bueff, 0, fileSize))!= -1 )

{

out = flujo de salida de nuevo archivo (nuevo archivo [I]);

out.write(bueff, 0, count);

p>

cerrar();

i++;

}

cerrar();

Devuelve 1 ;

}

catch(FileNotFoundException e)

{

system out .

return-1;

}

Captura (IOException e)

{

sistema. println(e);

Devuelve 0;

}

}

/*fn_hd

*rem : Implementación de la fusión de archivos

*per: 1 se devuelve correctamente, -1 se devuelve si no se puede encontrar el archivo, -2 se devuelve si la operación se cancela y 0 se devuelve en otros casos <; /p>

*aut:

*exp:FileNotFoundException, IOException

*Registro: 2005-11-28, creado

*/

Private int unionFiles()

/*fn_tl*/

{

String[]strFiles = new String[tblfilelist getitemcount(). ];

Archivo[] unionFiles =nuevo archivo [strfiles . length];

diálogo de archivo FD save = nuevo archivo de diálogo(shell, SWT. save); p>string s = FD save .

if (s == null)

{

return-2;

}

Archivo de salida Archivo = nuevo archivo(FD save . getfilterpath(),

FD save . get filename()

if (outFile). .exists())

{

Int msg = showMessage ("prompt", "El archivo existe, ¿desea reemplazarlo?" ",

SWT. Sí | SWT. No | SWT. ICON_QUESTION);

if (msg == SWT. No)

{

return-2;

}

}

for(int I = 0; i<strFiles.lengthi++)

{

strFiles[I]= tblfilelist .

getText();

}

Pruebe

{

FileInputStream in = null

flujo de salida del archivo = nuevo flujo de salida de archivo (outFile);

byte[] buff =nuevo byte[1024];

int count;

for(int I = 0 ;i<strFiles.lengthi++)

{

in = nuevo archivo inputstream(strFiles[I]);

while((count = in.read (buff, 0, 1024))! = -1)

{

out.write(buff, 0, recuento);

}

en . cerrar();

}

fuera .

catch(FileNotFoundException e)

{

sistema. println(e);

return-1; }

Captura (IOException e)

{

sistema . println(e); >

}

}