Teoria TODO
Teoria TODO
package com.company;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
class Student{
private String name;
private int age;
private LocalDate birthday;
@Override
public String toString() {
return name + "," + age + "," + birthday;
}
try {
//StandardOpenOption tenemos opciones
//por defecto:
/**
* -CREATE: si no existe se crea
* -TRUNCATE_EXISTING: si existe, borro el contenido
* -WRITE
*/
Files.writeString(path, header);
for (Student s: list) {
Files.writeString(path, s.toString(), StandardOpenOption.APPEND);
}
} catch (IOException e) {
e.printStackTrace();
}
//java 1
//OutputStream, FileOutputStream -- bytes
//FileWriter, BufferedWriter, PrintWriter -- texto
try(FileWriter fw = new FileWriter("files/fileWriter.csv")){
fw.write(header);
fw.write(System.lineSeparator()); //usa el salto de línea dada la separación que use por defecto nuestro sistema
fw.write(s1.toString());
for (Student student: list){
fw.write(student.toString());
fw.write(System.lineSeparator());
}
} catch (IOException e) {
e.printStackTrace();
}
/**
* BufferedWriter -> tiene buffer, es orientado a caracteres/texto, tiene método newLine, se usa para
* escribir grandes cantidades de texto
* FileWriter -> tiene un pequeño buffer, orientado a caracteres/texto, no tiene separación, se usa
* para cantidades de texto más pequeñas
* PrintWriter -> no tiene buffer, orientado a caracteres/texto, tiene método println, se usa
* cuando quiero imprimir usando formato.
*/
try(BufferedWriter bw = Files.newBufferedWriter(Path.of("files/bufferedW.csv"))){
bw.write(header);
bw.newLine();
for (Student student: list){
bw.write(student.toString());
bw.newLine();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
accessfile
package com.company;
import org.json.JSONArray;
import org.json.JSONObject;
import java.io.*;
import java.net.URL;
/**
* Ejemplo json
*{
* data:
* "name": "Angel",
* "age": 18,
* "birthday": "24/12/2004"
*}
*/
package com.company;
//Character set
//letras, números, signos de puntuación, sím
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.regex.Pattern;
import java.util.stream.Stream;
/**
* carácter se le asigna un código numérico conocido como CODE POINT
* 2 conjuntos de caracteres más comunes ASCII y Unicode
* ASCII -> más viejo
* Unicode -> más reciente
*
* Character encoding, consiste en codificar los caracteres en números -> glifos
* Glifo -> caract. alfanumérico, emoji, símbolo, signo pde puntuación.
* ASCII -> codificaciones : US-ASCII(7bits), ISO (8 bits)
* Unicode -> codific. UTF-8(var1-4bytes), UTF-16(2 bytes, UTF-32
* clase StandardCharsets
*/
public class FileReadingNIO{
public static void main(String[] args) {
//System.out.println(System.getProperty("file.encoding"));
//System.out.println(Charset.defaultCharset());
Path path = Path.of("File/file.txt");
/*try{
//4 métodos --> leen el fichero en memoria,
//hasta 2 gigabytes
}
}
HILOS
package com.company;
//main thread
public static void main(String[] args) {
//tengo 3 formas de crear hilos
//2a forma
new Thread(){
@Override
public void run() {
System.out.println(ThreadColor.ANSI_GREEN + "hilo de clase anónima");
}
}.start();
//con lambda
Runnable r = () -> System.out.println(ThreadColor.ANSI_RED + "hilo con lambda");
Thread lambdaR = new Thread(r);
lambdaR.start();
}
}
package com.company;
package com.company;
try {
hilito.join(2000);//se pone en espera
System.out.println(ANSI_RED + "hilito ha terminado y me ejecuto");
} catch (InterruptedException e) {
System.out.println("INTERRUMPIDO"); }
}
}).start();
//deja de dormir
hilito.interrupt();
package com.company;
@Override
public void run() {
System.out.println(ThreadColor.ANSI_RED + "soy un hilo runnable");
}
}
package com.company;
package com.company;