Я написал следующий метод, чтобы определить, форматируется ли рассматриваемый файл в DOS / MAC или в конце строки UNIX.
Я вижу по крайней мере 1 очевидную проблему:
1. Я надеюсь, что получу EOL при первом запуске, скажем, в течение первых 1000 байтов. Это может произойти или не произойти.
Я прошу вас ознакомиться с этим и предложить улучшения, которые приведут к ужесточению кода и повышению его универсальности.
СПАСИБО.
new FileFormat().discover(fileName, 0, 1000);
, а затем
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
}
}