FileOutputStream : byte단위로 파일을 기록하는 클래스 입니다.
사용 예제 ) 코드를 복붙 하여 실행해 보시기 바랍니다.
설명은 주석과 코드 아랫부분에 있습니다.
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class Sample {
public static void main(String[] args) {
try {
////////////////// 파일 스트림을 이용한 파일에 내용을 기록하는 예제 입니다.
// 기존의 파일이 없으면 만들어지고 있으면 덮어쓰게 되어 기존 파일내용이 지워진다.
FileOutputStream fos = new FileOutputStream("c:/temp/java/test/test.txt");
//기존 파일에 내용을 추가 할려면 두번째 인자로 true를 적어 준다. true를 추가해도 없으면 만든다.
//FileOutputStream fos1 = new FileOutputStream("c:/temp/java/test/test.txt",true);
// 파일에 저장할 내용
String strText = " 파일에 저장될 문자열 입니다.\n Hellow world !!";
// 문자열을 바이트배열로 변환해서 파일에 저장한다.
fos.write(strText.getBytes());
// 사용이 끝나면 파일 스트림을 닫습니다.
fos.close();
////////////////////기록한 파일을 FileInputStream 을 이용해 출력하는 예제 입니다.
// file open..
FileInputStream fis = new FileInputStream("c:/temp/java/test/test.txt");
// 파일의 내용을 byte단위로 읽어옵니다.그래서
// 읽어서 저장할 버퍼 byte 배열 설정
byte[] byteBuff = new byte[9999];
// 파일을 읽고 읽은 크기를 nRLen 에 저장한다.
int nRLen = fis.read(byteBuff);
// 출력을 위해서 byte배열을 문자열로 변환
String strBuff = new String(byteBuff, 0, nRLen);
// 읽은 내용을 출력 합니다.
System.out.printf("읽은 바이트수[%d] : \n읽은 내용 : \n%s \n", nRLen, strBuff);
// 사용이 끝나면 파일 스트림을 닫습니다.
fis.close();
} catch (Exception e) {
}
}
}
//결과는 :
//읽은 바이트수[46] :
//읽은 내용 :
// 파일에 저장될 문자열 입니다.
// Hellow world !!
InputStream과 는 반대로 자바 JVM의 입장에서 바이트 배열을 파일로 내보내는 역할을 하는 클래스입니다
// 기존의 파일이 없으면 만들어지고 있으면 덮어쓰게 되어 기존 파일내용이 지워진다.
FileOutputStream fos = new FileOutputStream("c:/temp/java/test/test.txt");
//기존 파일에 내용을 추가 할려면 두번째 인자로 true를 적어 준다. true를 추가해도 없으면 만든다.
FileOutputStream fos1 = new FileOutputStream("c:/temp/java/test/test.txt",true);
파일이 존재하면 삭제 후 생성되기 때문에 기존의 파일이 지워집니다.
새로운 파일을 만들더라도 true를 사용하는 밑의 예제를 사용하는 경우도 있다.
InputStream과 같이 사용 후에는 반드시 close( ) 해줘야 파일에 접근할 수가 있습니다.
이런 몇 가지만 조심하면 웬만한 데이터는 SQL 없이 파일로 사용이 가능하다.
접근하기도 좋고 DB보다는 파일이 편리할 때가 많이 있습니다.
아래는 실전 예제입니다.
클랄이언트로 부터 온 플래그를 tcpsvrchild3에서 플래그별로 분류 해서 파일정보를 보내면
서버에 파일이 있는지 확인하고 없으면 만들고 있으면 있는 정보를 돌려준다.
읽기만 하고 기록하지는 않는다. */
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class SvrFileRead {
String strBuff="";
String strCurrentMsg = null; String strFilename;
byte[] byteBuff = new byte[9999];// 사원파일을 읽어들일 바이트 버퍼
int nRLen; //파일이 저장될 디렉토리 이름
public void sfrFunc(String strDir,String strFileName) throws Exception {
// 디렉토리가 있는지 확인하고 없으면 만듬
File dir = new File(strDir);
if (dir.exists() == false) {
boolean t = dir.mkdirs();
if (t == true) strCurrentMsg = "디렉토리가 정상적으로 만들어 졌습니다.";
//System.out.println(strCurrentMsg);
} // 파일이 있는지 확인하고 없으면 만듬
File file = new File(strFileName);
boolean trueNewFile = file.createNewFile();
if (trueNewFile) { strCurrentMsg = "파일이 없어 파일을 만들었 습니다.";
//System.out.println(strCurrentMsg); }
// 파일이 존재하면 실행하는 부분
else if (file.exists() == true) {
try { FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
nRLen = bis.read(byteBuff);
if (nRLen < 0) {
strCurrentMsg = "---파일이 비었습니다--";
//System.out.println(strCurrentMsg); //System.out.println("here");
} else {
strBuff = new String(byteBuff, 0, nRLen);
strCurrentMsg = "기존 파일이 존재합니다.";
//System.out.println(strCurrentMsg);
//System.out.printf("읽은 바이트수[%d] : 읽은 내용\n[%s]\n", nRLen, strBuff);
}
bis.close();
fis.close(); // try 끝
} catch (FileNotFoundException e) {
//System.out.println("SfrFileRead 예외 발생 66: " + e.getLocalizedMessage());
e.printStackTrace();
}
}
}
}
설명 끝.
728x90
반응형
'자바' 카테고리의 다른 글
자바 BufferedOutputStream [북붙따라하기] (0) | 2020.12.31 |
---|---|
자바 BufferedInputStream [북붙따라하기] (0) | 2020.12.31 |
자바 파일 입출력 FileInputStream [북붙따라하기] (0) | 2020.12.30 |
자바 File 클래스 [북붙따라하기] (0) | 2020.12.30 |
자바 Time , Date 시간 날짜 출력 [북붙따라하기] (0) | 2020.12.30 |
댓글