Java에서 I/O 클래스 작업 중입니다. 바이트 스트림과 문자 스트림이라는 두 가지 중요한 유형이 있다는 것을 알고 있습니다. 하지만 ... 바이트 스트림을 사용하여 텍스트 파일을 읽고 쓰려고 시도했으며 효과가있었습니다. 여기에 코드입니다 :바이트 스트림과 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에 관한 몇 가지 기사뿐만 아니라 관련 질문을 읽고 그들은 그렇게 말합니다) 문자 스트림은 문자로 문자를 읽을 것입니다,하지만이게 나에게주는 이점은 무엇입니까? 또는 바이트 스트림을 사용하여 문자를 읽으면 어떤 문제가 발생할 수 있습니까? 나는 나의 질문이 분명하기를 바랍니다. 나는 실제 사례를 고맙게 생각한다.
를 이용하여 기대가 포함되어있는 경우 키릴 문자 "! Привет는"다음 코드에서는
String
및 테스트에 바이트 지향 입력 스트림을 사용하여 해당 텍스트를 읽어보세요 "파일의 모든 문자가 단일 바이트로 표현 될 수 있다면"당신은 무엇을 의미합니까? 나는 키릴 문자 "Привет!"로 시도해 보았습니다! 소스 파일 "UTF-8"의 인코딩을 유지하고 대상 파일의 인코딩을 "ANSI"로 변경 했으므로 어쨌든 작동했습니다. –@AdemTepe - In UTF-8, 최대 0x7F의 코드 포인트는 단일 바이트로 표시됩니다. ([this thread] (예 : https://stackoverflow.com/questions/7136421/why-does-utf-8-use-more-than-one-byte-to-represent-some-characters)를 참조하십시오. 바이트 지향 코드는 바이트 단위로 파일을 복사하는 데는 잘 작동하지만 바이트 단위로 문자를 해석 (입력시)하거나 바이트에 문자를 쓰려고하면 지향성 스트림. 나는이 점을 명확히하기 위해 나의 대답을 업데이트 할 것이다. –