package läs.skriv.binary;
import java.io.*;
public class ReadAndWrite {
//Läser in antal bytes ifrån en fil
static byte[] läsFil(String namnPåFil){
File fil = new File(namnPåFil);
byte[] byteMängd = new byte[(int)fil.length()];
System.out.println("Storlek på Fil: " + fil.length());
try {
InputStream input = null;
try{
int byteLästa = 0;
//Utnyttjar buffradInputStream
input = new BufferedInputStream(new FileInputStream(fil));
//While loop för att försäkra alla bytes läs in, loopen iterar i flesta fall en gång
//men i vissa fall kan den iterera flera ggr.
while(byteLästa<byteMängd.length){
int återståendeBytes = byteMängd.length - byteLästa;
//input.read matar in alla bytes mellan bytesLästa och återståendebytes, den returnerar -1
//när den har nått slutet av filen
int inläsningBytes = input.read(byteMängd, byteLästa, återståendeBytes);
if (inläsningBytes > 0){
byteLästa = byteLästa + inläsningBytes;
}
}
}
finally {
input.close();
}
}
catch (FileNotFoundException ex){
System.out.println("Fil ej funnen");
}
catch (IOException ex){
System.out.println(ex);
}
return byteMängd;
}
static void skrivBytes(byte[] bArray, String filNamn){
try {
OutputStream output = null;
try {
output = new BufferedOutputStream(new FileOutputStream(filNamn));
//Skriver ut bytes Arrayen i filen
output.write(bArray);
}
finally {
output.close();
}
}
catch(FileNotFoundException ex){
System.out.println("Fil ej funnen");
}
catch(IOException ex){
System.out.println(ex);
}
}
}
public class Meny {
static final String inMatningsFil = "C:\\bil.jpg";
static final String utMatningsFil = "C:\\bil_kopia.jpg";
public static void main(String[] args) {
//läser in alla bytes ifrån fil
byte[] bArray = ReadAndWrite.läsFil(inMatningsFil);
//Skriver ut alla bytes i en annan fil
ReadAndWrite.skrivBytes(bArray, utMatningsFil);
}
}