File
File f1=new File("c:/sun/abc.txt");
File f1=new File("c:\\sun\\abc.txt");
File f1=new File("c:\\sun","abc.txt");
File f=new File("c:\\sun");
File f1=new File(f,"abc.txt");
어떠한 파일을 이클립스를 통해 불러올때
위와 같은 형식들로 불러올 수 있다.
주소를 제대로 입력하지 않으면 디폴트는 해당
자바 파일이 있는 폴더에 생성된다.
.isDirectory()
불리언 타입의 리턴 폴더라면 true 아니라면 false를
도출한다. 삼항 연산자로 사용할 수 있다.
반대로
.isFile() 도 있다.(파일일시 true)
File win= new File("c:\\windows\\");
System.out.println("win:"+win);
String result = win.isDirectory() ? "폴더" : "파일";
System.out.println("result:"+result);
String result2 = win.isFile() ? "폴더" : "파일";
System.out.println("result2:"+result2);
.exists( )
어떠한 파일이 존재하는지 불리언 타입으로 리턴
.mkdir( );
해당 파일(폴더)를 만드는 메소드.
.createNewFile( );
해당 파일을 만드는 메소드.
IOException으로 인해 반드시 try/catch로 둘러싸줘야한다.
.delete();
해당 파일(폴더)를 지우는 메소드.
안에 다른 파일이 있다면 지울 수 없고 false를 리턴한다.
Window => show/view =>package explorer
스트림
스트림은 자료의 입출력을 도와주는 중간 매개체 역할을 한다.
단방향 : 읽기,쓰기가 동시에 진행되지 않는다.
연결다리라고 생각하면 된다.
바이트 스트림
FileInputStream
해당 파일을 읽어들이는 용도
해당 파일이 없으면 오류가 난다.
FileOutputStream
해당 파일을 쓰는 용도
해당 파일까지의 경로 중 폴더가 없으면 오류가 난다.
바이트 스트림은 알파벳이나 숫자만 정상적으로 입출력되며
한글은 문자스트림을 통해 써야한다.
문자 스트림은
FileWriter
FileReader로 사용한다.
buffer : 임시기억장소
처리속도의 효율을 높이기 위해 임시기억장소에
저장을 하고 일정 목표치에 도달하면 한번에
전송하는 방식을 사용한다.
BufferedWriter
(Writer out, int size)
매개변수인 Reader 객체로 BufferedWriter 객체를 생성하고
size는 버퍼의 용량을 정하는 부분인데, 만약 지정하지 않으
면 8192문자를 정할 수 있는 버퍼가 생성된다.
.flush : Buffer를 통해 전송하는 데이터는
한번에 지정한 숫자만큼씩 보내는데
예를 들어 1~10까지 5씩 보내라고 한다면
12345는 6이 들어올때 보내지지만
678910은 뒤에 들어오는 데이터가 없어
전송이 되지 않는다.
그럴때 flush를 통해 잔여 데이터를 전송할 수 있다.
BufferedReader 객체명=new BufferedReader
(new InputStreamReader(System.in));
스캐너는 공백 이전까지 밖에 인식 못하므로
공백을 써야한다면 이런식으로 작성하여 사용해야한다.
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Ex11_04_FileStream {
public static void main(String[] args) {
try {
FileInputStream fis = new FileInputStream("from.txt");
// "C:\Java_jjh\11_화일입출력\from.txt"
// FileNotFoundException => 해당 파일이 존재하지 않을때.
FileOutputStream fos = new FileOutputStream("to.txt");//디폴트는 false다
// 원래대로라면 실행할때마다 지우고 쓰는데 ("to.txt",true)로 쓰면 실행할 때마다 계속 겹쳐쓴다.
int i;
while(true) {
i=fis.read();
if(i==-1) { //파일의 끝은 EOF가 있고 그것이 -1로 설정되어있다.
break;
}
else {
fos.write(i);
}
}
} catch (FileNotFoundException e) { //밑의 IOException이 부모 클래스이므로 굳이 써주지 않아도 된다.
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally { //파일을 닫아주어야한다.
try {
fis.close(); //예외처리,변수X,초기화X
fos.close();
} catch(IOException e) {
e.printStackTrace();
}
}
}
}
'Develop > JAVA' 카테고리의 다른 글
0620 JAVA JDBC를 통한 SQL 연동 (0) | 2022.06.20 |
---|---|
0609 JAVA 열여섯번째... (0) | 2022.06.10 |
0603 JAVA 열세번째 (0) | 2022.06.03 |
0602 JAVA 열두번째~ (0) | 2022.06.02 |
0531 JAVA 열한번째 (0) | 2022.06.01 |