(byte 기반) (char 기반)
바이트기반 스트림은 문자기반 스트림은
FIleInputStream 이고 FileReader
FileOutputStream FileWriter 이다.
즉 InputStream => Reader
OutputStream => writer 로 바뀐것뿐.
보조스트림 또한
BufferedInputStream 이고 BufferedReader
BuffredOutputStream BufferedWriter 이다.
FileInputStream에서 원하는 파일의 내용을 읽어올때.
public class FileInputStreamTest {
public static void main(String[] args) throws Exception {
byte[] by = new byte[100]; //바이트기반이므로 무조건 바이트단위로 읽어오기때문에
//읽어올 내용을 바이트 형으로 담아줄 배열이 필요
File directory = new File("d:\\"); // 원하는(찾고자하는 파일이있는) 디렉토리를 File객체에 담아줌.
File file = new File(directory, "cv.txt"); //원하는 파일의 디렉토리와 원하는 파일의 이름을 File객체에 담음
FileInputStream fis = new FileInputStream(file); //이제 담은 파일 객체를 읽어올수있도록 스트림 형성.
System.out.println(fis.read(by)); // read()메서드를 이용하여 파일을 읽어옴.
}
}
read()에는 내용을 담아올 바이트 배열을 넣어줌.
근데 read는 int 형이기 때문에 숫자가 나올거임.
내가 cv.txt쓴글 "안녕해"를 그대로 출력하려면?
public class FileInputStreamTest {
public static void main(String[] args) throws Exception {
byte[] by = new byte[100]; //바이트기반이므로 무조건 바이트단위로 읽어오기때문에
//읽어올 내용을 바이트 형으로 담아줄 배열이 필요
File directory = new File("d:\\"); // 원하는(찾고자하는 파일이있는) 디렉토리를 File객체에 담아줌.
File file = new File(directory, "cv.txt"); //원하는 파일의 디렉토리와 원하는 파일의 이름을 File객체에 담음
FileInputStream fis = new FileInputStream(file); //이제 담은 파일 객체를 읽어올수있도록 스트림 형성.
fis.read(by); // 배열 by에 파일 내용을 담았단 뜻.
System.out.println(new String (by)); //byte는 1byte단위로 끊어 읽어오기때문에 String형으로 캐스팅해줌.(자바에서 한 문자는 2byte임)
fis.close(); //닫는버릇!
}
}
근데 BufferedInputStream을 하면 성능이 좋아지기 땜에 웬만하면 BufferedInputStream을 이용하자
이용방법은 그냥 추가만하면됨
package fileTest;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
public class BufferedInputStreamTest {
public static void main (String [] args)throws Exception{
byte [] by = new byte[100];
File directory = new File ("d:\\");
File file_name = new File(directory,"cv.txt");
FileInputStream fis = new FileInputStream(file_name);
BufferedInputStream bis = new BufferedInputStream(fis); //FileInputStream의 객체를 넣고
bis.read(by); //read를 할때 BufferedInputStream객체를 통해 접근하면 됨.
System.out.println(new String(by)); //그냥 버퍼가 파일인풋 안고 간다생각하면됨.
bis.close() //닫는버릇!
}
}
-------------------------그리고 문자기반 스트림도 똑같음!!!-----------------------------
차이점이라곤 배열을 byte가 아닌 char형으로만해주면됨!!!!!!!!!!!
package fileTest;
import java.io.File;
import java.io.FileReader;
public class FileReaderTest {
public static void main (String [] args)throws Exception{
char [] ch = new char [100];
//File directory = new File("d:\\"); //이거 밑에줄로 한번에 쓸수있음.
File file_name = new File("d:\\","cv.txt");
FileReader fr = new FileReader(file_name);
fr.read(ch);
System.out.println(ch);
fr.close(); //닫는버릇!
}
}
-------------------BufferedReader 또한 똑같음--------------------------------
package fileTest;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
public class BufferedReaderTest {
public static void main (String [] args)throws Exception{
char [] ch = new char [100];
File file_name = new File("d:\\","cv.txt");
FileReader fr = new FileReader(file_name);
BufferedReader br = new BufferedReader(fr);
br.read(ch);
System.out.println(ch);
br.close(); //닫는버릇!
}
}
'JAVA > 팀장님 JAVA수업' 카테고리의 다른 글
입출력 추가설명 (쓰기) (0) | 2012.07.19 |
---|---|
Collection 보충설명 HashSet (0) | 2012.07.18 |
Collection 보충설명중 Iterator (0) | 2012.07.18 |
Collection 보충설명중 배열과 LinkedList의 차이점. (0) | 2012.07.17 |
Collection 보충설명중 (Vector와 ArrayList) (0) | 2012.07.17 |