I sistemi operativi (quasi) POSIX e Windows sono noti per distinguere tra I / O di file 'modalità binaria' e 'modalità testo'. Mentre la modalità precedente non trasforma alcun dato tra il file o il flusso reale e l'applicazione, quest'ultima "traduce" il contenuto in un formato standard in una modalità specifica della piattaforma: le terminazioni di riga vengono convertite in modo trasparente in '\n'
in C, e alcune piattaforme (CP / M, DOS e Windows) tagliano un file quando viene trovato un byte con valore 0x1A
.
Queste trasformazioni mi sembrano un po 'inutili.
Le persone condividono file tra computer con sistemi operativi diversi. La modalità testo causerebbe la gestione di alcuni dati in modo diverso su alcune piattaforme, quindi quando ciò è importante, è probabile che utilizzi la modalità binaria.
Ad esempio: mentre Windows usa la sequenza CR LF
per terminare una riga in modalità testo, la modalità testo UNIX non tratterà CR
come parte della sequenza di fine riga. Le applicazioni dovrebbero filtrare quel rumore da soli. Le versioni precedenti di Mac utilizzano solo CR
in modalità testo come terminazioni di riga, quindi né UNIX né Windows potrebbero comprendere i suoi file. Se ciò è importante, un'applicazione portatile probabilmente implementerà l'analisi da sola anziché utilizzare la modalità testo.
L'implementazione dell'interpretazione newline nel parser potrebbe anche eliminare un po 'di overhead dell'utilizzo della modalità testo, poiché i buffer avrebbero bisogno di essere riscritti (e possibilmente ridimensionati) prima di tornare all'applicazione, mentre ciò potrebbe essere meno efficiente di quando accadrebbe nel applicazione invece.
Quindi, la mia domanda è: c'è qualche buona ragione per fare ancora affidamento sul sistema operativo host per tradurre terminazioni di linea e troncamenti di file?