1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
public static void writeUnicode (String file, String key, String session, String value) throws IOException{
System.out.println("Je suis dans la fonction write unicode");
BufferedReader lecteurAvecBuffer = null;
String Tmp="";
String contenuFile="";
String ligne;
int exist = 0;
String s="";
int n = 0;
File fDestination = new File(file);
/**
* Fichier temporaire qui permet de copier toutes les lignes du fichier file qui ne sont pas modifie et de modifie ce qui a ete modifie
* ce fichier temporaire sera copier sur le file et suprimer
*/
copier(new File(file),new File("ini-inspector-tmp.ini"));
FileWriter fw = new FileWriter("ini-inspector-tmp.ini", false);
File fSource = new File("ini-inspector-tmp.ini");
// FileOutputStream outFile = new FileOutputStream("ini-inspector-tmp.ini");
// OutputStreamWriter writer = new OutputStreamWriter(outFile, "UTF-16");
// Writer output = new BufferedWriter(writer);
/**
* le BufferedWriter output auquel on donne comme argument le FileWriter fw cree juste au dessus
*/
BufferedWriter output = new BufferedWriter(fw);
if(fDestination.canWrite()){
try{
lecteurAvecBuffer = new BufferedReader( new InputStreamReader(new FileInputStream(file),"UTF-16"));
}catch(FileNotFoundException exc){
erreur += "ERROR of opening of the file : "+fDestination;
}
/**
* On parse le fichier ini et on copie les lignes dans le fichier temporaire
*/
while ((ligne = lecteurAvecBuffer.readLine()) != null){
if(ligne.length()>0){
System.out.println("ligne avant "+ligne);
String l = ligne;
l= l.substring(0,1);
if(!(l.equals(";"))){
if(l.equals("[")){
contenuFile = ligne;
ligne = new String ( contenuFile.getBytes(), "UTF-16" );
//System.out.println("Ligne = "+ligne);
output.write(ligne);
output.newLine();
String sessionTmp;
sessionTmp = "["+session+"]";
if(contenuFile.equals(sessionTmp)){
s = session;
}
}else{
String sp[];
sp = ligne.split("=");
sp[0]=sp[0].trim();
key = key.trim();
session = session.trim();
if((sp[0].equals(key)) && (s.equals(session))){
if(sp.length>1){
sp[1] = sp[1].trim();
value = value.trim();
if(!(sp[1].equals(value))){
contenuFile = key+" = "+value ;
ligne = contenuFile;
ligne = new String ( contenuFile.getBytes(), "UTF-16" );
int j = 1;
while(j<sp.length){
String[] tmp;
tmp = sp[j].split("//");
if(tmp.length>1){
contenuFile += sp[1];
}
j++;
}
}else{
/**
* Ligne modifiée
*/
exist = 1;
contenuFile = ligne;
ligne = new String ( contenuFile.getBytes(), "UTF-16" );
}
//System.out.println("Ligne = "+ligne);
output.write(ligne);
output.newLine();
}
}else{
contenuFile = ligne;
ligne = new String ( contenuFile.getBytes(), "UTF-16" );
//System.out.println("Ligne = "+ligne);
output.write(ligne);
output.newLine();
}
}
}else{
contenuFile = ligne;
ligne = new String ( contenuFile.getBytes(), "UTF-16" );
//System.out.println("Ligne = "+ligne);
output.write(ligne);
output.newLine();
}
}
}
/**
* ensuite flush envoie dans le fichier, ne pas oublier cette methode pour le BufferedWriter
*/
output.flush();
output.close();
lecteurAvecBuffer.close();
/**
* Si exist == 0 alors le fichier n'a pas été modifié
*/
if(exist == 0){
// File tmp = new File("fichier_tmp.ini");
// copier(fDestination,tmp);
copier(fSource,fDestination);
erreur += donnerHeure()+" The file "+file+" was modified.\t";
erreur += "["+session+"]\t";
erreur += key+" = "+value+"\n";
}
// fSource.delete();
}else{
/**
* Le fichier file est en lecture seule donc on ne peut pas modifier le fichier en cours
*/
erreur += donnerHeure()+" The file "+fDestination+" is read only \n";
}
} |
Partager