Я работаю над классами ввода-вывода в Java. Я понимаю, что есть два важных типа потоков: поток байтов и поток символов. Но... Я попытался прочитать и записать текстовый файл с потоком байтов, и это сработало. Вот код:
File klasor = new File("C:\\Java");
if(!klasor.exists()) klasor.mkdirs();
File kaynakDosya = new File("C:\\Java\\kaynak.txt");
if(!kaynakDosya.exists()) kaynakDosya.createNewFile();
File hedefDosya = new File("C:\\Java\\hedef.txt");
if(!hedefDosya.exists()) hedefDosya.createNewFile();
FileInputStream kaynak = new FileInputStream(kaynakDosya);
FileOutputStream hedef = new FileOutputStream(hedefDosya);
int c;
while((c = kaynak.read()) != -1) {
hedef.write(c);
}
if(kaynak != null) {
kaynak.close();
}
if(hedef != null) {
hedef.close();
}
И затем я сделал то же самое с потоком символов:
File klasor = new File("C:\\Java");
if(!klasor.exists()) klasor.mkdirs();
File kaynakDosya = new File("C:\\Java\\kaynak.txt");
if(!kaynakDosya.exists()) kaynakDosya.createNewFile();
File hedefDosya = new File("C:\\Java\\hedef.txt");
if(!hedefDosya.exists()) hedefDosya.createNewFile();
FileReader kaynak = new FileReader(kaynakDosya);
FileWriter hedef = new FileWriter(hedefDosya);
int c;
while((c = kaynak.read()) != -1) {
hedef.write(c);
}
if(kaynak != null) {
kaynak.close();
}
if(hedef != null) {
hedef.close();
}
Эти двое дали один и тот же результат. Итак, я хочу знать, почему я не должен использовать здесь поток байтов, а поток символов? (Я прочитал некоторые статьи, а также связанные вопросы здесь, в stackoverflow, и они так говорят) Я знаю, что поток символов будет читать его посимвольно, но какое преимущество это дает мне? Или какие проблемы могут возникнуть, если я читаю символы, используя поток байтов? Надеюсь, мой вопрос понятен. Буду признателен за реальные примеры.