바이트 단위의 입출력 클래스, 파일을 읽고 쓰는데 활용
FileInputStream
은 읽기, FileOutputStream
쓰기로 활용
영어는 1Bytes, 한글은 2Bytes(UTF-8 인코딩은 3Bytes), 줄넘김(\n) 또한 2Bytes
FileInputStream
, FileOutputStream
실습
public class FileInputStreamTest {
public static void main(String[] args) {
FileInputStream fis = null;
FileOutputStream fos = null;
int totalBytes = 0;
try {
try {
fis = new FileInputStream("test.txt");
fos = new FileOutputStream("test_copy.txt");
for (int readByte; (readByte = fis.read()) != -1;) {
fos.write(readByte);
System.out.write(readByte);
totalBytes++;
}
} finally {
fos.close();
fis.close();
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("\n전체 바이트 수: " + totalBytes + " bytes.");
}
}
파일을 불러오는 형태를 활용한 것
jdbc.properties 라는 파일을 만들어, 그 안에서 JDBC 내용을 입력
Properties 객체를 만들어서 jdbc.properties 파일을 불러와 내용을 담음
만들어진 테이블 내용을 바꿀 때는 ALTER
사용
ALTER TABLE 테이블명 CHANGE '기존테이블 컨텐츠명' '바꿀테이블 컨텐츠명' '테이블 컨텐츠의속성';
package com.varxyz.jv251.dao;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
public class DataSourceManager {
// final은 선언과 동시에 초기화를 해줘야함, 아니면 에러 생성자에도 만들어야함
private static final String JDBC_URL;
private static final String JDBC_USER;
private static final String JDBC_PASSWD;
// static initialize
static {
Properties props = new Properties(); // Properties 객체 생성
try {
props.load(new FileInputStream("jdbc.properties")); // jdbc 파일 불러옴
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
Class.forName(props.getProperty("JDBC_DRIVER")); // 드라이버 연결
System.out.println("LOADED DRIVER --->" + props.getProperty("JDBC_DRIVER"));
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
JDBC_URL = props.getProperty("JDBC_URL");
JDBC_USER = props.getProperty("JDBC_USER");
JDBC_PASSWD = props.getProperty("JDBC_PASSWD");
System.out.println("JDBC_URL = " + JDBC_URL);
System.out.println("JDBC_USER = " + JDBC_USER);
System.out.println("JDBC_PASSWD = " + JDBC_PASSWD);
}
public static void main(String[] args) {
DataSourceManager manager = new DataSourceManager();
System.out.println(manager);
}
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWD);
}
기존 close를 메소드로 작성
DataSourceManager.close(rs, pstmt, con) 혹은 (pstmt, con) 로 활용
// close 메서드 생성 (rs 유)
public static void close(ResultSet rs, PreparedStatement pstmt, Connection con) throws SQLException {
if (rs != null) {
rs.close();
}
if (pstmt != null) {
pstmt.close();
}
if (con != null) {
con.close();
}
}
// close 메서드 생성 (rs 무)
public static void close(PreparedStatement pstmt, Connection con) throws SQLException {
close(null, pstmt, con);
}
}