20250506 EjerSplitMerge_1 - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
venga pues nada vamos a hacer entonces la interfaz un nuevo frame os voy a que
00:00:00
no lo sé ya lo sabrás el viernes vale
00:00:17
que sí vale pues entonces ya tenemos el frame hemos dicho que dos pestañas un tablet pan y
00:00:23
con dos pestañas, bueno, pues venga
00:00:35
para hacer dos
00:00:36
paneles con pestañas
00:00:40
pues primero colocábamos
00:00:42
el panel tabulado este
00:00:44
bueno
00:00:46
voy a poner el
00:00:48
el absolute layout aquí
00:00:50
ahí
00:00:52
y ahora el panel
00:00:55
este de aquí
00:00:56
vale
00:00:58
y ahora vamos a poner ya
00:01:05
un panel
00:01:08
ahí, con una pestañita
00:01:09
Y esta pestañita va a ser la pestañita de split.
00:01:14
Este va a ser panel split.
00:01:39
Y ahora vamos a hacernos un panel que es el panel de merge.
00:01:44
Y este, vale.
00:02:00
Pues empezamos con el panel de Split.
00:02:17
¿Qué tiene que tener?
00:02:19
Tiene que tener un control para introducir el nombre del
00:02:20
fichero, ¿verdad?
00:02:23
Se selecciona un fichero, al ser posible, con un file chooser.
00:02:25
Vale, pues un botoncito, seleccionar fichero.
00:02:28
Y una vez seleccionado, se hace clic en un botón Split y te
00:02:31
dice, vale, ¿cuál va a ser el nombre del usuario,
00:02:38
el nombre del fichero?
00:02:43
Por ejemplo, data, esto no lo entiendo.
00:02:44
Ah, sí, los nombres de los ficheros.
00:02:47
¿Data 1, data 2 y de nombre datos?
00:02:49
Vale, si datos 1, datos 2 es que vale.
00:02:52
Vale, pues data es la raíz común que tendrán los nombres de los ficheros en los que se va a dividir.
00:02:54
Entonces, si ponemos data, serán data 1, data 2, data 3, data 4.
00:03:02
¿Vale?
00:03:05
Cada uno con 1024 bits más el restante.
00:03:06
Venga, pues entonces.
00:03:09
Necesitamos, por tanto, un botón para que salga el file chooser.
00:03:14
un botón de split
00:03:17
y cuando le damos al botón de split
00:03:19
va a aparecer un jOptionPane
00:03:21
para pedirte el nombre del fichero
00:03:23
y luego ya
00:03:24
cuando le demos a aceptar a ese
00:03:26
jOptionPane pues ya se hace la división
00:03:29
y se acabó, entonces no hacen falta más
00:03:31
controles que esos, pues venga
00:03:33
vamos a poner un botoncito
00:03:35
para seleccionar el fichero
00:03:37
voy a ponerle al
00:03:38
panel este de aquí
00:03:46
panel split
00:03:47
el absolute layer
00:03:49
estaba buscando el gestor de ubicación del panel
00:04:08
vale, en este panel absolute layer
00:04:10
para poner el botón donde queramos
00:04:12
ahora ya sí, un botón que sea
00:04:13
elegir fichero
00:04:16
botón
00:04:20
elegir fichero
00:04:24
vale, y el botón
00:04:27
elegir fichero va a tener un texto arriba
00:04:29
selecciona
00:04:31
fichero, vale
00:04:35
este es nuestro botoncito que abriría
00:04:40
el file chooser
00:04:42
bueno, luego vamos a ponerle otro botón
00:04:43
que es para darle ya la orden de hacer el split
00:04:46
pues ese botón aquí debajo
00:04:48
lo llamamos
00:04:51
botón split, por ejemplo
00:04:53
como nos dé la gana
00:04:55
y le ponemos el texto
00:04:56
split
00:05:00
y ya está, porque cuando le damos a split se hace la división
00:05:02
y se acabó, entonces ya no hay más controles
00:05:12
aquí, venga, pues
00:05:13
evento del primer botón, el más fácil, abrir el file
00:05:15
chooser para seleccionar un nombre de fichero
00:05:17
luego ya el más complicado es el otro, el que tiene
00:05:19
toda la división, claro, pues venga
00:05:21
vámonos al evento de este botoncito
00:05:23
este botoncito va a
00:05:25
seleccionar el fichero
00:05:30
para seleccionar el
00:05:31
nos va a permitir seleccionar el fichero
00:05:34
para eso ya nos lo sabemos de memoria
00:05:36
instanciamos este objeto
00:05:38
y luego abrimos la ventana de
00:05:45
diálogo, vale
00:05:51
vamos a abrir la ventana de diálogo que sabemos
00:05:59
que nos devuelve
00:06:01
un entero con
00:06:02
la respuesta que ha dado
00:06:05
el usuario, si ha dado
00:06:07
save, open, cancel, lo que sea
00:06:09
y ahora ya hacemos aquí
00:06:11
show open
00:06:14
diálogo
00:06:17
y ahora ya
00:06:17
si no le han dado a cancel
00:06:25
porque podrían haberle dado a cancel
00:06:27
porque se han equivocado, si no le han
00:06:28
dado a cancel o lo que es lo mismo. Si la opción
00:06:31
que ha devuelto la ventanita cuando es la opción de
00:06:34
aprobar, entonces
00:06:39
ya vamos a quedarnos con el
00:06:45
fichero que esté seleccionado. Entonces, de nuevo, eso que nos devuelve
00:06:48
el file chooser es un objeto file que tiene que estar accesible
00:06:53
para el resto de la aplicación, en concreto para el botón de split. Pues ese es un dato de la
00:06:56
aplicación. Pues ese dato de la aplicación
00:07:00
para que esté accesible
00:07:03
para el resto de métodos y clases
00:07:04
internas, lo declaramos
00:07:06
aquí fuera.
00:07:08
Pues este es el fichero a dividir.
00:07:11
El fichero que vamos a dividir es
00:07:17
este.
00:07:18
Bueno, pues el fichero que vamos a dividir
00:07:23
es este y le damos ya
00:07:25
valor en este momento.
00:07:26
Ahí ya tiene valor.
00:07:37
Ay, perdón, no lo he puesto aquí.
00:07:40
Fichero
00:07:42
dividir
00:07:43
ahí, vale, pues ya tenemos
00:07:45
el file, ese botón era solamente para el file
00:07:49
dime
00:07:51
eh, sí
00:07:51
sí, sí, vale
00:07:54
ahora ya, pues
00:07:56
podemos poner el
00:07:58
fichero que se ha seleccionado, a lo mejor en el propio
00:08:00
botón o en algún sitio para que se vea
00:08:03
cuál es el que hemos seleccionado
00:08:04
bueno, vamos a hacerlo en una
00:08:06
etiqueta
00:08:10
para no estropear tampoco el botón
00:08:11
entonces vamos a ponernos una etiqueta cualquiera
00:08:14
por aquí
00:08:18
da igual, lo que queramos, con lo que importa es que esté informativo
00:08:21
vale, y esta etiqueta que inicialmente
00:08:27
no tiene texto, en esta etiqueta que se llama nombre fichero
00:08:36
aprovechamos y lo ponemos
00:08:47
ponemos aquí, bueno, vamos a sacarla
00:08:48
a clase, porque si no, no va a ser accesible
00:08:52
desde la clase interna, ya la hemos sacado
00:08:56
nombre fichero, y ahora ya ponemos en
00:09:00
nombre fichero
00:09:04
pues vamos a fijarle ese texto, sectes
00:09:10
pues de nuestro fichero, dividir
00:09:14
dividir
00:09:16
que nos muestre
00:09:20
venga
00:09:21
esto
00:09:23
el fichero con toda su ruta
00:09:25
entonces ya este botón podríamos probarlo
00:09:28
rápidamente a ver si
00:09:32
nos deja seleccionar un fichero correctamente
00:09:33
eh
00:09:36
esto es
00:09:38
un poquito
00:09:40
seleccionamos fichero
00:09:46
venga a suponer que selecciono este
00:09:48
abrir pues ya está
00:09:50
este, seleccionado está y está en file
00:09:52
pero nos falta este botoncito
00:09:54
ahora ya que es el botoncito complicado
00:09:56
vale, ese es el botoncito de pensar
00:09:58
venga
00:10:01
panel de split otra vez
00:10:04
evento, bueno
00:10:06
pues ahora viene la parte importante
00:10:13
la parte importante en programación
00:10:15
es
00:10:18
cómo organizar mis ideas
00:10:18
para elaborar un algoritmo
00:10:21
que haga lo que tiene que hacer
00:10:24
eso es lo que yo haría con un lápiz
00:10:25
y un papel pensando con palabras
00:10:28
del idioma natural.
00:10:30
Eso es lo que importa en programación.
00:10:32
Luego ya escribir el código
00:10:35
y hacer las cosas mecánicas
00:10:36
pues ya es fácil.
00:10:37
Entonces ahora tenemos que pensar ya sin ordenador y sin nada.
00:10:40
¿Cómo podemos resolver este problema?
00:10:42
Me dan un fichero
00:10:44
que tiene los bytes que sean.
00:10:45
Me da igual lo que tengan, dentro de un montón de bytes.
00:10:48
Y ahora, tengo que
00:10:50
crear otros
00:10:52
que cada uno de ellos tenga
00:10:53
1024 bytes del anterior.
00:10:55
entonces
00:10:58
del primer fichero tendré que leer
00:11:01
eso está claro
00:11:03
y los demás serán ficheros
00:11:04
en los que tendré que escribir
00:11:07
y los crearé
00:11:09
de nuevas y ya más o menos
00:11:11
puedo vislumbrar, ah pues yo puedo hacer
00:11:13
una cosa, primero voy a ver
00:11:15
cuántos ficheros voy a necesitar
00:11:17
pues calculamos el tamaño del fichero
00:11:18
y lo dividimos entre 1024
00:11:21
y eso nos dará cuántos ficheros necesitamos
00:11:22
con eso ya tenemos un array
00:11:24
de objetos file
00:11:27
que son los ficheros en los que tengo que escribir
00:11:28
y ahora hay un bucle en el cual
00:11:30
abro
00:11:33
del primero, leo hasta
00:11:35
1024, copio en el otro
00:11:36
y cierro el otro
00:11:38
siguiente iteración del bucle, leer
00:11:40
otros 1024 y copiar en el otro
00:11:43
siguiente iteración del bucle
00:11:45
leer otros 1024 y copiar en el otro
00:11:47
y ya está
00:11:49
entonces uno lo que tiene es que
00:11:49
pensar, vale, ¿cómo hago esto?
00:11:53
bueno, pues primero la idea es esa
00:11:55
un fichero del que leo
00:11:57
y un montón de ficheros en los que voy a escribir de nuevas
00:11:58
uno se abrirá
00:12:01
con, habrá que ver qué clase
00:12:03
pero con clase para leer y otros se abrirán
00:12:05
habrá que ver qué clase pero con clases para escribir
00:12:07
y ahora ya, ¿cómo organizo eso?
00:12:09
bueno
00:12:12
pues tengo que hacer un bucle
00:12:13
porque tengo que escribir en una cantidad de ficheros
00:12:15
no sé en cuántos, en unos cuantos
00:12:17
en los que me hayan salido haciendo la división
00:12:18
pues será un bucle
00:12:21
pues ese bucle, ¿qué tendrá que hacer?
00:12:22
coger 1024 y escribir
00:12:24
y ya está, y en cada iteración
00:12:26
iré leyendo 1024 y escribir
00:12:28
y ya está, y ahora hay que programar eso
00:12:30
que eso es lo que evaluamos
00:12:32
¿vale? que sabéis programar
00:12:34
algoritmos y traducirlos a Java
00:12:36
pues venga
00:12:38
vamos a
00:12:39
a ir dándole
00:12:41
forma a esto
00:12:44
el enunciado dice que eso podía ser lo más
00:12:45
lioso, que el contenido de fichero me da igual
00:12:50
el que sea, porque un fichero
00:12:52
no deja de ser una ristra de bytes
00:12:53
otra cosa es como interprete uno de esos bytes
00:12:55
si los interpreta según una tabla
00:12:58
ASCII en el caso de que sean texto
00:13:01
si los interpreta
00:13:02
con un fichero Word, otra cosa es como lo interprete
00:13:04
alguien, pero son una ristra de bytes
00:13:06
en nuestro caso nos da igual
00:13:09
lo que codifique esa ristra de bytes, porque lo único que vamos a hacer
00:13:10
va a ser leer un byte
00:13:13
y escribirlo ahí, leer uno y escribirlo ahí
00:13:14
con lo cual nos da igual lo que tenga
00:13:17
luego podemos usar nuestra clase
00:13:19
FileReader, que nuestra clase FileReader
00:13:20
lee
00:13:22
8 bits
00:13:23
lo que pasa es que si tú le haces el casting a char
00:13:26
y lo muestras
00:13:29
eso va a ser un carácter
00:13:31
de la tabla ASCII porque ese fichero
00:13:33
se supone que está codificando caracteres de la tabla ASCII
00:13:35
pero entonces nos da igual
00:13:37
nos da igual lo que esté codificando
00:13:39
pero lo único que vamos a hacer va a ser
00:13:41
con ese char que hemos leído
00:13:42
luego mandarlo a otro
00:13:44
entonces podemos usar la misma file reader
00:13:46
nos da igual que lo que estemos leyendo
00:13:49
no tenga luego ninguna conexión
00:13:50
con la tabla ASCII con sentido
00:13:53
nos da lo mismo, porque no lo vamos a hacer un casting
00:13:55
a char, ni lo vamos a mostrar, ni vamos a hacer nada
00:13:57
lo vamos a leer
00:13:59
es decir, mover a una variable de la aplicación
00:14:01
y luego de esa misma variable
00:14:04
llevarla a otro
00:14:05
entonces podemos usar el mismo file reader
00:14:07
¿vale?
00:14:09
pero a ver, lo primero que tenemos que hacer
00:14:12
es ver cuantos ficheros vamos a necesitar
00:14:13
entonces
00:14:16
pues tenemos que ver
00:14:17
el tamaño de ese fichero
00:14:19
y dividirlo entre 1024
00:14:21
a ver cuánto nos da
00:14:23
y eso más el resto
00:14:25
será el número de ficheros
00:14:27
¿verdad?
00:14:29
si tuviéramos 2048
00:14:30
dividiendo en 24 te sale 2
00:14:32
¿vale?
00:14:34
pero si tiene más de 2048 te sale 2
00:14:35
pero el resto es un tercer fichero
00:14:38
entonces si el resto no fuera 0
00:14:41
hay un tercer fichero
00:14:43
con los que queden
00:14:44
¿vale?
00:14:45
bueno, pues entonces, primero vamos a calcular
00:14:47
el número de ficheros, vamos por orden
00:14:50
¿qué necesitamos?
00:14:52
el número de fichero, necesitamos el tamaño
00:14:53
de nuestro fichero original
00:14:56
nosotros la clase
00:14:58
file ya hemos visto
00:15:01
que nos ofrece información sobre el fichero
00:15:02
en general, el permiso de escritura
00:15:05
entonces es el momento de cotillear en esa clase
00:15:06
a ver si tuviera
00:15:09
un método
00:15:10
que me devolviera el tamaño del fichero
00:15:12
y lo tiene
00:15:14
tiene un método led que me devuelve
00:15:18
cuántos bytes
00:15:21
tiene el fichero
00:15:22
si no lo tuviera
00:15:24
no es grave
00:15:29
porque lo que podemos es
00:15:30
abrirlo
00:15:33
para leer, hacer el bucle de lectura con un contador
00:15:36
y ahí contar
00:15:39
el bucle de lectura cuantas veces
00:15:40
se ejecuta
00:15:43
¿vale? es decir, podríamos hacer un contador
00:15:45
abrir el fichero para leer
00:15:51
meternos en el bucle de leer char, leer char
00:15:53
leer char y cuando ese bucle ha terminado
00:15:55
el contador tendrá
00:15:57
cuantos caracteres tiene
00:15:59
Entonces que no disponemos de este método
00:16:00
Podríamos contarlos a mano
00:16:02
Pero no nos hace falta contarlos a mano
00:16:04
Porque ya lo tenemos aquí
00:16:06
Vale, pues entonces
00:16:07
El número de ficheros
00:16:09
Ahora ya
00:16:12
Lo podemos averiguar
00:16:13
Porque podría ser algo como esto
00:16:17
El resto de dividir
00:16:20
Tam
00:16:23
Entre 1024
00:16:24
Es igual a 0
00:16:27
Porque si es igual a 0
00:16:30
El número de ficheros va a ser el cociente directamente entre TAM y 1024, que será un cociente exacto.
00:16:33
Será un cociente exacto el que sea, pues ese será el número de ficheros.
00:16:47
Pero si el resto no es cero, tengo un excedente de bytes que serán un fichero adicional.
00:16:51
Luego, en el caso de que el resto no sea igual, pues el número de ficheros será este.
00:17:01
aquí como esto me lo ha
00:17:07
guardado en long
00:17:14
pues por eso me dice long en int
00:17:16
pierdo precisión porque claro el método length
00:17:17
te da el tamaño en long
00:17:20
entonces para no ir arrastrando en long
00:17:22
todo el rato como no vamos a trabajar con ficheros
00:17:23
de millones y millones de bytes
00:17:25
vamos a hacer el casting aquí a int
00:17:27
y ya está porque no va a ser
00:17:30
más de los bytes que caben en un int
00:17:32
bueno
00:17:34
es el número de ficheros
00:17:37
y ahora ya sí que hay que hacer un bucle
00:17:38
y en ese buque ¿qué habrá que hacer?
00:17:40
leer 1024
00:17:43
e ir escribiendo
00:17:44
en el fichero correspondiente
00:17:47
entonces
00:17:48
lo que está claro es que el fichero dividir hay que abrirlo
00:17:51
para leer
00:17:54
pues entonces el fichero dividir habrá que abrirlo así
00:17:54
dividir
00:17:58
este va a haber
00:18:10
que abrirlo para leer
00:18:17
sí
00:18:18
es un rollo
00:18:22
lo del try catch
00:18:23
vamos a meterlo todo
00:18:25
en el mismo try-catch
00:18:27
para que sea más cómodo
00:18:29
esto claro, por rapidez
00:18:33
al no sacarlo a métodos
00:18:35
externos y luego llamar desde aquí
00:18:37
que quedaría el código más bonito
00:18:39
pues nos queda aquí un método
00:18:41
interno enorme
00:18:43
que esto es feo, pero bueno
00:18:45
lo ideal sería
00:18:47
sacar esto a un método adicional
00:18:50
llamar aquí al método dividir
00:18:51
y al dividir hacerlo fuera
00:18:53
y así queda más claro
00:18:54
el código, vale, pues ahora ya
00:18:57
sí que ya puede empezar el bucle
00:18:59
y el bucle se va a ejecutar tantas veces como
00:19:00
número de ficheros, lógicamente
00:19:03
pues entonces el bucle, un bucle for normal
00:19:04
y corriente, porque se va a ejecutar tantas
00:19:07
veces como número de ficheros
00:19:09
un tolen, no, número de
00:19:10
ficheros, vale
00:19:18
ahora
00:19:27
aquí que tenemos, que
00:19:29
crear un
00:19:31
fichero con el nombre que toque
00:19:33
que nos ha faltado
00:19:35
lo tenemos que poner antes, pedir al usuario cuál va a ser
00:19:37
la raíz de los nombres que van a tener
00:19:39
los ficheros adicionales, nos ha faltado, se lo ponemos ahora
00:19:41
pues hacer un fichero con el nombre
00:19:43
que toque, que será datos
00:19:45
concatenado con i, para que sea datos
00:19:47
0, datos 1, datos 2
00:19:49
hacer un fichero y hacerlo como escritura
00:19:51
abrirlo como escritura
00:19:53
leer 1024 bytes del original
00:19:54
e irlos trasladando al otro
00:19:57
y cerrar el que acabamos de abrir
00:19:59
y se acabó
00:20:01
entonces vamos a pedir antes que nada
00:20:02
el nombrecito
00:20:04
que va a tener
00:20:05
los ficheros generados
00:20:08
que van a compartir
00:20:12
como raíz
00:20:12
vale, pues entonces vamos a pedirlo
00:20:13
aquí lo primero
00:20:16
en un jOptionPanel
00:20:17
vamos a ver si hay algún jOptionPanel
00:20:20
que permita devolver
00:20:22
si el showInputDialog
00:20:24
te devuelve
00:20:26
te abre un área de texto y devuelve un mensaje
00:20:28
Pues venga, introduzca nombre de los ficheros y el nombre de los ficheros me lo devuelve aquí como valor de retorno.
00:20:30
ahí, vale, esta es
00:20:57
la raíz del nombre de los ficheros, venga pues ahora ya
00:21:01
si que podemos, vamos a ver, nombre
00:21:06
vamos a crear el nuevo fichero para escribir, file writer
00:21:09
va a ser un new file writer y el nombre de ese fichero
00:21:18
va a ser raíz concatenado
00:21:24
con i para que sea raíz 0, raíz 1, raíz 2
00:21:28
y ahora concatenado con la extensión
00:21:32
que no sé si ponía .ptr o lo que fuera
00:21:36
pero vamos, eso es lo de menos
00:21:38
vale, pues ya hemos creado el fichero que toca
00:21:42
para cada i con la extensión correspondiente
00:21:47
sí
00:21:50
añadimos el catch que me pide
00:21:56
y ya está
00:22:01
vale, ahora, ¿qué tenemos que hacer?
00:22:02
Podemos leer del fichero original hasta 1024 o hasta fin de fichero, porque en el caso de que estemos ya en el último, llegará el fin de fichero antes de que hayamos leído 1024.
00:22:10
Entonces, podemos hacer lo siguiente.
00:22:25
Empezamos una cuenta de los ficheros, de los bytes a leer.
00:22:27
Una cuenta igual a cero.
00:22:31
Y ahora podemos hacer.
00:22:32
Y ahora vamos a leer aquí int n va a ser para el carácter leído y ahora mientras cont sea menor que 1024 y además de ser cont menor de 1024 y además de ser menor de 1024
00:22:33
no hemos llegado a fin de archivo
00:23:03
es decir
00:23:05
si n
00:23:07
siendo n el resultado de haber leído yo
00:23:08
de mi file reader
00:23:11
es diferente de menos 1
00:23:12
si se dan simultáneamente
00:23:16
las dos cosas
00:23:19
que no he llegado a fin de archivo
00:23:20
y que contador
00:23:22
no es 1024
00:23:24
pues ¿qué hacemos con ese carácter?
00:23:26
lo mandamos al otro fichero
00:23:28
n
00:23:30
lo mandamos al otro
00:23:35
e incrementamos const para contar
00:23:37
que ese carácter ya lo hemos movido
00:23:39
bueno, cuando este bucle
00:23:41
ha terminado, ya hemos leído
00:24:00
o 1024 bytes
00:24:02
o
00:24:04
hemos acabado ya el fichero
00:24:06
correspondiente, entonces
00:24:07
ahora ya toca cerrar este
00:24:09
y luego guardo
00:24:11
y mando el array de bytes total
00:24:17
y le das el tamaño de 1024
00:24:19
si, lo que pasa es que en el último
00:24:21
caso no sería de 1024
00:24:23
pero bueno, se podría saber de qué
00:24:25
porque calculamos el resto y ya está
00:24:28
vale
00:24:29
entonces
00:24:31
ahora ya
00:24:33
este toca cerrarlo
00:24:36
este flujo toca cerrarlo porque con este archivo hemos acabado
00:24:37
cuando el for vuelva
00:24:42
arriba, creamos un fichero
00:24:44
nuevo con el nuevo nombre
00:24:46
y otra vez empezamos
00:24:47
empezamos la cuenta
00:24:49
y seguimos leyendo del mismo
00:24:52
este no lo estamos
00:24:53
cerrando. O sea, este en cada iteración del bucle
00:24:56
for hemos leído 1024
00:24:58
y se ha quedado ahí colocado. Ese no lo hemos cerrado.
00:24:59
En la siguiente iteración del for
00:25:02
seguirá leyendo los 1024 siguientes.
00:25:04
Y en la siguiente seguirá leyendo
00:25:06
los 1024. Así
00:25:08
hasta que ya hayamos acabado con todos
00:25:09
los ficheros.
00:25:12
En la última de las iteraciones
00:25:14
sabemos que el while va a
00:25:16
terminar por esta, por aquí.
00:25:18
Porque va a llegar a fin de fichero.
00:25:19
En las anteriores no. En las anteriores va a acabar
00:25:21
porque ya hemos escrito los 1024
00:25:23
que tocaban
00:25:26
aquí una vez que este for
00:25:26
que está aquí acabado
00:25:36
ya sí que
00:25:38
podríamos cerrar este
00:25:39
entonces yo creo que
00:25:42
aquí no se nos escapa nada
00:25:46
¿no?
00:25:48
hemos visto cuántos ficheros necesitamos
00:25:51
hemos abierto este para leer
00:25:53
y hemos lanzado
00:25:56
un bucle for donde en cada iteración
00:25:57
leemos 1024
00:25:59
y mandamos al otro
00:26:02
cerramos y en la siguiente iteración
00:26:03
fichero nuevo
00:26:05
vale, entonces
00:26:06
pues vamos a ver si se nos ha escapado
00:26:12
algo, que errores nos salen, etc
00:26:15
aquí como
00:26:17
como estoy creando los ficheros
00:26:23
directamente
00:26:28
con el nombre sin ruta
00:26:30
me los va a crear en la raíz del proyecto
00:26:33
si yo pongo aquí otra ruta
00:26:36
me los creará donde sea
00:26:38
vale, pues voy a crear un fichero
00:26:39
cualquiera aquí en el escritorio
00:26:42
a ver si funciona
00:26:44
para seleccionarlo
00:26:48
este es cualquiera, si da igual
00:26:50
si este es solo, como podría coger
00:27:00
un fichero de Word, lo que fuera, lo que importa es ver
00:27:02
si funciona y me aparecen luego
00:27:04
tantos, venga pues este mismo
00:27:06
este tiene
00:27:08
este que acabo de crear
00:27:14
tiene
00:27:16
66, bueno, es que tiene que tener
00:27:17
más de 1024, claro
00:27:20
entonces, para hacer pruebas
00:27:21
bueno, porque si no me creería uno solo
00:27:24
entonces podemos coger cualquiera
00:27:25
de Word gordote, por ejemplo
00:27:28
este mismo
00:27:30
que tengo aquí
00:27:30
este mismo de Word
00:27:33
a ver qué propiedades
00:27:36
tiene
00:27:38
este tiene, sí
00:27:38
15.160
00:27:41
bytes
00:27:44
venga, cualquiera que tenga muchos bytes
00:27:45
bueno, lo que pasa es que el SQL al ser de texto
00:27:50
también van a ser gorditos
00:27:52
a menos que tengáis uno enorme
00:27:53
vale, pues vamos a probar
00:27:54
porque aquí seguro que hay
00:27:58
mil nullpoint que nos salen
00:28:00
que no hemos tenido en cuenta
00:28:02
aquí habrá mil rollos que nos van a fallar
00:28:03
estoy convencida
00:28:06
vamos a probarlo
00:28:07
dividimos, selecciona fichero
00:28:09
pues me voy aquí a mi escritorio
00:28:12
y he dicho que
00:28:16
este mismo
00:28:20
abrir
00:28:21
este es el fichero que voy a dividir, ya hago un split
00:28:25
nombre de los ficheros
00:28:28
pues datos, va a ser la raíz
00:28:30
aceptar
00:28:32
no ha salido ningún error
00:28:33
pero esto no significa que lo haya hecho
00:28:44
vamos a refrescar aquí
00:28:46
refresh
00:28:48
aquí hay un montón, datos 0, datos 1
00:28:49
datos no sé cuántos. Lo que pasa es que
00:28:53
claro, yo podría abrir aquí, pero lógicamente
00:28:55
como son las porciones del Word, no voy a ver nada.
00:28:57
Vamos a...
00:29:00
Si tuviéramos un fichero de texto
00:29:01
muy, muy, muy enorme, yo puedo
00:29:02
guardar un Word como ASCII
00:29:05
seguramente, ¿no?
00:29:07
Entonces, lo digo porque así vamos a ver
00:29:09
más fácil. Bueno, por lo pronto vamos a ver si el número
00:29:11
de ficheros me encaja.
00:29:13
Vamos a ver si el número de ficheros me encaja.
00:29:15
Pero bueno, tiene toda la pinta
00:29:17
de que lo está haciendo bien.
00:29:19
A ver...
00:29:20
Este mío tenía 15.160, entonces, si yo divido 15.160 entre 1.024, 14,8, 15 ficheros deberían haberme salido, 15.
00:29:23
Vamos a ver si me han salido 15.
00:29:51
Sí, me han salido 15 justo
00:29:54
Del 0 al 14
00:29:59
Hombre, pues casi tiene toda la pinta
00:29:59
De que lo habrá dividido bien
00:30:02
Porque si me ha hecho esos justo
00:30:03
¿Te han salido?
00:30:05
Pero porque igual tu fichero era enorme
00:30:23
No, no
00:30:25
- Materias:
- Programación
- Niveles educativos:
- ▼ Mostrar / ocultar niveles
- Formación Profesional
- Ciclo formativo de grado superior
- Primer Curso
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 23
- Fecha:
- 7 de mayo de 2025 - 19:35
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 30′ 29″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 146.08 MBytes