Ejercicio 1: Listar archivos y directorios
import java.io.*;
public class Main {
public static void main(String[] args) {
String directorio;
File actual = null;
if (args.length > 0)
directorio = args[0];
else
directorio = ".";
try{
actual = new File(directorio);
if(actual.isDirectory()){
String[] contenido = actual.list();
for(int i = 0; i < contenido.length; i++){
System.out.println(contenido[i]);
}
}
else
System.out.println("El directorio no es válido");
}
catch(Exception e){
e.printStackTrace();
}
}
}
Ejercicio 2: Filtrar archivos por extensión
import java.io.*;
public class Main {
public static void main(String[] args) {
String directorio;
File actual = null;
if (args.length > 0)
directorio = args[0];
else
directorio = ".";
actual = new File(directorio);
if (actual.isDirectory()){
String[] archivos = actual.list(new FiltradoArchivos(".exe"));
if (archivos.length > 0){
for(int i = 0; i < archivos.length; i++){
System.out.println("Archivos en " + actual.getAbsolutePath() + ":");
System.out.println(archivos[i]);
}
}
else{
System.out.println("No hay archivos para mostrar");
}
}
else
System.out.println("Directorio no válido");
}
}
Ejercicio 3: Copiar archivo origen a destino
Opciones.java:
import java.io.*;
public class Opciones {
private File origen = null;
private File destino = null;
private InputStream in = null;
private OutputStream out = null;
private String ruta = "";
private boolean controlOrigen = true;
public void copiarArchivo(File o, File d, boolean bandera){
indicarArchivo(o, d, bandera);
if (controlOrigen){
try{
in = new FileInputStream(origen);
out = new FileOutputStream(destino);
byte[] lector = new byte[1024];
int i;
while ((i = in.read(lector)) > 0){
out.write(lector, 0, i);
}
System.out.println("Copia realizada correctamente");
}
catch(FileNotFoundException e){
e.printStackTrace();
}
catch(IOException e){
e.printStackTrace();
}
finally{
try{
in.close();
out.close();
}
catch(FileNotFoundException e){
e.printStackTrace();
}
catch(IOException e){
e.printStackTrace();
}
}
}
else{
System.out.println("El archivo de origen indicado no existe. No se puede realizar la copia");
}
}
public void indicarArchivo(File o, File d, boolean bandera){
if(o.isFile())
origen = o;
else
controlOrigen = false;
if(bandera)
destino = d;
if (d.isDirectory()){
ruta = ruta + d.getAbsolutePath() + File.separator + o.getName();
System.out.println("Path D:" + d.getAbsolutePath());
System.out.println("Nombre origen:" + o.getName());
System.out.println("Ruta total:" + ruta);
destino = new File(ruta);
}
else
destino = d;
}
}
Main.java:
import java.io.*;
public class Main {
public static void main(String[] args) {
Opciones op = new Opciones();
File origen = new File("C:\\Users\\usuario\\workspace\\File3\\origen.txt");
File destino = new File("C:\\Users\\usuario\\Desktop\\");
System.out.println(destino.getAbsolutePath());
op.copiarArchivo(origen, destino, origen.isFile());
}
}
Ejercicio 4: Copiar directorio recursivamente
Ficheros.java:
import java.io.*;
public class Ficheros {
public void copiarDirectorio(File dOrigen, File dDestino) throws IOException{
if(dOrigen.isDirectory()){
if(!dDestino.exists()){
dDestino.mkdir();
}
String[] hijos = dOrigen.list();
for(int i = 0; i < hijos.length; i++){
copiarDirectorio(new File(dOrigen, hijos[i]), new File(dDestino, hijos[i]));
System.out.println("Copiado " + hijos[i]);
}
}
else{
copiarFichero(dOrigen, dDestino);
}
}
public void copiarFichero(File fOrigen, File fDestino) throws IOException{
InputStream in = new FileInputStream(fOrigen);
OutputStream out = new FileOutputStream(fDestino);
byte[] buffer = new byte[1024];
int cap;
while ((cap = in.read(buffer)) > 0){
out.write(buffer, 0, cap);
}
in.close();
out.close();
System.out.println("Copiado " + fOrigen.getName());
}
}
Main.java:
import java.io.*;
public class Main {
public static void main(String[] args) {
File origen = new File("C:\\Users\\usuario\\workspace\\File4\\origen\\");
File destino = new File("C:\\Users\\usuario\\workspace\\File4\\destino\\");
Ficheros fc = new Ficheros();
try{
fc.copiarDirectorio(origen, destino);
System.out.println("Volcado finalizado");
}
catch(IOException e){
e.printStackTrace();
}
}
}
Ejercicio 5: Escribir referencias y precios
Opciones.java:
import java.io.*;
import java.util.Vector;
public class Opciones {
public void escribePrecios(int[] ref, double[] precio, String nombre) throws IOException{
FileWriter fW = new FileWriter(nombre);
BufferedWriter bW = new BufferedWriter(fW);
for(int i = 0; i < ref.length; i++){
bW.write(String.valueOf(ref[i]) + " - " + String.valueOf(precio[i]) + "€");
bW.newLine();
}
bW.close();
fW.close();
}
}
Main.java:
import java.io.IOException;
public class Main {
public static void main(String[] args) {
String nombre = "precios.txt";
int[] ref = {1, 5, 58, 80, 97};
double[] precio = {51.03, 5.00, 4.99, 87.95, 3.14};
Opciones op = new Opciones();
try{
op.escribePrecios(ref, precio, nombre);
System.out.println("Fichero de precios generado correctamente");
}
catch(IOException e){
e.printStackTrace();
}
}
}
Ejercicio 6: Leer referencias y precios con RandomAccessFile
import java.io.*;
import java.util.Random;
public class Main {
public static void main(String[] args) {
int i, n;
boolean finArchivo = false;
RandomAccessFile archivo = null;
Random r = new Random();
try{
archivo = new RandomAccessFile("precios.dat", "rw");
for (i = 0; i < 100; i++){
if (i % 2 == 0){
n = r.nextInt(500) + 1;
archivo.writeInt(n);
}
else{
n = r.nextInt(5000) + 1;
archivo.writeInt(n);
}
}
archivo.close();
}
catch(FileNotFoundException e){
e.printStackTrace();
}
catch(IOException e){
e.printStackTrace();
}
try{
archivo = new RandomAccessFile("precios.dat", "rw");
System.out.println("Referencia y precios");
do{
try{
i = archivo.readInt();
n = archivo.readInt();
System.out.println("REF. " + i + ": " + n + "€");
}
catch(EOFException e){
finArchivo = true;
archivo.close();
System.out.println("Fin de fichero");
}
}while(!finArchivo);
}
catch(FileNotFoundException e){
e.printStackTrace();
}
catch(IOException e){
e.printStackTrace();
}
}
}
Ejercicio 7: Actualizar precios con descuento/incremento
Metodos.java:
import java.io.*;
import java.text.DecimalFormat;
public class Metodos {
private double i, n;
private boolean finArchivo = false;
private RandomAccessFile archivo = null;
private DecimalFormat precio = new DecimalFormat("#.##");
private DecimalFormat ref = new DecimalFormat("#");
public void leerArchivoDoubles(String nombre){
finArchivo = false;
try{
archivo = new RandomAccessFile(nombre, "rw");
System.out.println("Referencia y precios");
do{
try{
i = archivo.readDouble();
n = archivo.readDouble();
System.out.println("REF. " + ref.format(i) + ": " + precio.format(n) + "€");
}
catch(EOFException e){
finArchivo = true;
archivo.close();
}
}while(!finArchivo);
}
catch(FileNotFoundException e){
e.printStackTrace();
}
catch(IOException e){
e.printStackTrace();
}
}
public void cambiarPrecios(String nombre){
finArchivo = false;
try{
archivo = new RandomAccessFile(nombre, "rw");
do{
try{
i = archivo.readDouble();
i = archivo.readDouble();
if (i > 100){
archivo.seek(archivo.getFilePointer() - 8);
archivo.writeDouble(i * 0.50);
}
if (i < 100){
archivo.seek(archivo.getFilePointer() - 8);
archivo.writeDouble(i * 1.50);
}
}
catch(EOFException e){
finArchivo = true;
archivo.close();
}
}while(!finArchivo);
}
catch(FileNotFoundException e){
e.printStackTrace();
}
catch(IOException e){
e.printStackTrace();
}
}
}
Main.java:
public class Main {
public static void main(String[] args) {
Metodos m = new Metodos();
m.cambiarPrecios("precios.dat");
m.leerArchivoDoubles("precios.dat");
}
}