1

Bon, c'est juste pour tester la synthaxe... Et donner un petit algo RLE ecrit par moi même, d'ailleur si vous voyez des choses a redire, faites signe.
import java.io.*;
import java.util.*;
import java.lang.reflect.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class test {

  private static File file1 = new File("test.txt");
  private static File file2 = new File("test1.txt");
  private static File file3 = new File("test2.txt");

  public static void main(String[] args) {

    try {
      DataInputStream dataInputStream1 = new DataInputStream(new BufferedInputStream(new FileInputStream(file1)));
      DataOutputStream dataOutputStream1 = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(file2)));
      compress(dataInputStream1, dataOutputStream1);
      dataOutputStream1.flush();
      dataOutputStream1.close();
      DataInputStream dataInputStream2 = new DataInputStream(new BufferedInputStream(new FileInputStream(file2)));
      DataOutputStream dataOutputStream2 = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(file3)));
      uncompress(dataInputStream2, dataOutputStream2);
      dataOutputStream2.flush();
      dataOutputStream2.close();
    }
    catch (Exception e) {
      System.out.println(e.toString());
    }

  }

  public static void compress(DataInputStream dataInputStream, DataOutputStream dataOutputStream) {

    boolean eof = false;
    byte readedByte = 0;
    byte lastReadedByte = 0;
    try {
      readedByte = dataInputStream.readByte();
    }
    catch (EOFException e) {
      return;
    }
    catch (IOException e) {
      return;
    }
    int nbChar = 1;
    while (eof == false) {
      try {
        lastReadedByte = readedByte;
        readedByte = dataInputStream.readByte();
        if (lastReadedByte == readedByte) {
          nbChar++;
          if (nbChar < 127) continue;
          dataOutputStream.writeByte(127);
          dataOutputStream.writeByte(nbChar);
          dataOutputStream.writeByte(lastReadedByte);
          nbChar = 0;
          continue;
        }
        else if (lastReadedByte == 127 && nbChar <= 3) {
          dataOutputStream.writeByte(127);
          dataOutputStream.writeByte(nbChar);
        }
        else if (nbChar == 1) {
          dataOutputStream.writeByte(lastReadedByte);
        }
        else if (nbChar == 2) {
          dataOutputStream.writeByte(lastReadedByte);
          dataOutputStream.writeByte(lastReadedByte);
        }
        else if (nbChar == 3) {
          dataOutputStream.writeByte(lastReadedByte);
          dataOutputStream.writeByte(lastReadedByte);
          dataOutputStream.writeByte(lastReadedByte);
        }
        else {
          dataOutputStream.writeByte(127);
          dataOutputStream.writeByte(nbChar);
          dataOutputStream.writeByte(lastReadedByte);
        }
        nbChar = 1;
      }
      catch (EOFException eof1) {
        eof = true;
      }
      catch (Exception e) {
        System.out.println(e.toString());
        return;
      }
    }
    try {
      if (readedByte == 127 && nbChar <= 3) {
        dataOutputStream.writeByte(readedByte);
        dataOutputStream.writeByte(nbChar);
      }
      else if (nbChar == 1) {
        dataOutputStream.writeByte(readedByte);
      }
      else if (nbChar == 2) {
        dataOutputStream.writeByte(readedByte);
        dataOutputStream.writeByte(readedByte);
      }
      else if (nbChar == 3) {
        dataOutputStream.writeByte(readedByte);
        dataOutputStream.writeByte(readedByte);
        dataOutputStream.writeByte(readedByte);
      }
      else {
        dataOutputStream.writeByte(127);
        dataOutputStream.writeByte(nbChar);
        dataOutputStream.writeByte(readedByte);
      }
    }
    catch (Exception e) {
      System.out.println(e.toString());
    }

  }

  public static void uncompress(DataInputStream dataInputStream, DataOutputStream dataOutputStream) {

    boolean eof = false;
    byte readedByte = 0;
    byte byte1;
    int nbChar;
    int i;
    while (eof == false) {
      try {
        readedByte = dataInputStream.readByte();
        if (readedByte != 127) {
          dataOutputStream.writeByte(readedByte);
        }
        else {
          nbChar = dataInputStream.readByte();
          if (nbChar == 1) {
            dataOutputStream.writeByte(127);
          }
          else if (nbChar == 2) {
            dataOutputStream.writeByte(127);
            dataOutputStream.writeByte(127);
          }
          else if (nbChar == 3) {
            dataOutputStream.writeByte(127);
            dataOutputStream.writeByte(127);
            dataOutputStream.writeByte(127);
          }
          else {
            byte1 = dataInputStream.readByte();
            for (i = 0 ; i < nbChar ; i++) {
              dataOutputStream.writeByte(byte1);
            }
          }
        }
      }
      catch (EOFException eof1) {
        eof = true;
      }
      catch (Exception e) {
        System.out.println(e.toString());
        return;
      }
    }

  }

}


2

Une chose à redire ... on dit read et non pas readed winkwinksmile

3

Autre chose: la moitié des import ne servent a rien
Tom Bombadil est un gai luron
Bleu vif est sa veste, et ses bottes sont jaunes.
Personne ne l'a jamais pris encore car Tom c'est le maitre
Ses chansons sont des chansons plus fortes et ses pieds sont plus rapides
J.R.R Tolkien

4

Bon pour le readed je sais tongue
Je le changerais pour coder en anglais correct, lol
Pour les import aussi, mais par flemme, je les ai pas enlever, je fais de copier coller entre sources, pour els imports pour aller plus vite, ce n'est qu'un brouillon