J'ai écrit la méthode suivante pour déterminer si le fichier en question est formaté avec des fins de ligne DOS/MAC ou UNIX.Comment déterminer le format de fichier? DOS/Unix/MAC
Je vois au moins 1 problème évident: 1. j'espère que j'obtiendrai l'EOL sur la première exécution, disons dans les 1000 premiers octets. Cela peut ou peut ne pas arriver.
Je vous demande de revoir ceci et de suggérer des améliorations qui vont conduire à durcir le code et à le rendre plus générique.
MERCI.
new FileFormat().discover(fileName, 0, 1000);
puis
public void discover(String fileName, int offset, int depth) throws IOException {
BufferedInputStream in = new BufferedInputStream(new FileInputStream(fileName));
FileReader a = new FileReader(new File(fileName));
byte[] bytes = new byte[(int) depth];
in.read(bytes, offset, depth);
a.close();
in.close();
int thisByte;
int nextByte;
boolean isDos = false;
boolean isUnix = false;
boolean isMac = false;
for (int i = 0; i < (bytes.length - 1); i++) {
thisByte = bytes[i];
nextByte = bytes[i + 1];
if (thisByte == 10 && nextByte != 13) {
isDos = true;
break;
} else if (thisByte == 13) {
isUnix = true;
break;
} else if (thisByte == 10) {
isMac = true;
break;
}
}
if (!(isDos || isMac || isUnix)) {
discover(fileName, offset + depth, depth + 1000);
} else {
// do something clever
}
}
Que diable faites-vous avec le FileReader a? Et quoi de neuf avec le décalage? –
rien. oublié de l'enlever. – JAM