교재
자체교재 : chap20 -10
출력서식
- java.io 팩키지
System.out.println(); -> 콘솔창에 출력
out.println(); -> 브라우저에 출력
- 문자열출력기호 ""
System.out.println("""); //에러남
단순기호로 출력하고 싶다면, \와 같이 사용해야한다.
System.out.println("\""); //ok
System.out.println("\"");
System.out.println("\"안녕\"");
출력결과
"
"안녕"
- 경로구분기호 \
경로구분기호 사용시 \두번 사용
/한번 사용
System.out.println("\\");
System.out.println("d:\\java0514\\workspace");
System.out.println("d:/java0514/workspace");
출력결과
\
d:\java0514\workspace
d:/java0514/workspace
- \n 줄바꿈 (new line) /\t 탭 (tab)
System.out.println("사과\n");
System.out.println("사과\n딸기");
System.out.println("\n\n\n참외");
System.out.println("\n사\t과");
출력결과
사과
사과
딸기
참외
사 과
-% 출력포맷
%d 10진 정수형
//System.out.printf("출력포맷",값);
System.out.printf("%d %d %d\n",1,3,5); //1 3 5
System.out.printf("%d, %d, %d\n",1,3,5); //1, 3, 5
System.out.printf("%d \t %d \t %d\n",1,3,5); //1 3 5
//양수면 오른쪽정렬, 음수면 왼쪽정렬
System.out.printf("#%5d#\n",2); //# 2#
System.out.printf("#%-5d#\n",2); //#2 #
%f 실수형
- 6.2의 의미 : 6자리를 잡고 양수는 오른쪽정렬
System.out.printf("%f %f %f \n",1.2, 3.4, 5.5); //1.200000 3.400000 5.500000
System.out.printf("#%6.2f# \n",7.8); //# 7.80#
System.out.printf("#%-6.2f# \n",7.8); //#7.80 #
System.out.printf("#%.2f# \n",7.8); //#7.80#
%c 문자형
System.out.printf("%c %c %c \n",'S' ,'K', 'Y'); //S K Y
System.out.printf("#%5c# \n",'R'); //# R#
System.out.printf("#%-5c# \n",'r'); //#r #
%s 문자열형
System.out.printf("%s %s %s \n","Year" ,"Month" ,"Date"); //Year Month Date
System.out.printf("#%8s# \n","Happy"); //# Happy#
System.out.printf("#%-8s# \n","Happy"); //#Happy #
읽기모드
File Class
- 파일 관련 정보를 알 수 있다.
File 클래스 예시)
- File 크기
- File 이름
- File 경로
package oop0611;
import java.io.File;
public class Test02_File {
public static void main(String[] args) {
// File 클래스
// 파일 관련 정보를 알 수 있다
try {
//예외 발생이 예상되는 코드 작성
//경로구분시 기호는 \\로 한다
//경로명+파일명
//String pathname="D:\\java0514\\setup\\eclipse-jee-luna-SR2-win32-x86_64.zip";
//경로구분시 /기호도 사용가능하다
//사용 : 사진업로드 파일업로드할때
String pathname="D:/java0514/setup/eclipse-jee-luna-SR2-win32-x86_64.zip";
File file=new File(pathname);
if(file.exists()){ //파일이 존재하는지?
System.out.println("파일 가져오기 성공!");
long filesize=file.length(); //파일사이즈 확인 long 단위쓰기
System.out.println("파일크기:"+filesize+"Byte");
System.out.println("파일크기:"+(filesize/1024)+"KB");
System.out.println("파일크기:"+(filesize/1024/1024)+"MB");
String filename=file.getName();
System.out.println("파일명.확장명:"+filename);
//경로명+파일명 D:\java0514\setup\eclipse-jee-luna-SR2-win32-x86_64.zip
System.out.println(file.getPath());
//D:\java0514\setup
System.out.println(file.getParent());
}else{
System.out.println("파일 없어여 ㅠ");
}//if end
}catch(Exception e){
//예외가 발생되면 실행할 코드 작성
System.out.println("파일클래스 실패:"+e);
}//try end
System.out.println("END");
}//main() end
}//class end
출력결과
파일 가져오기 성공!
파일크기:266781307Byte
파일크기:260528KB
파일크기:254MB
파일명.확장명:eclipse-jee-luna-SR2-win32-x86_64.zip
D:\java0514\setup\eclipse-jee-luna-SR2-win32-x86_64.zip
D:\java0514\setup
END
문제) 파일명과 확장명을 분리출력하시오
int lastdot =filename.lastIndexOf(".");
String name=filename.substring(0,lastdot);
String ext =filename.substring(lastdot+1);
System.out.println("파일명:"+name);
System.out.println("확장명:"+ext);
출력결과
파일명:eclipse-jee-luna-SR2-win32-x86_64
확장명:zip
- 파일 삭제
file.delete();
진짜지워짐!!!
Input
-파일 내용읽기
- java.io 팩키지
- Writer Reader InputStream OutputStream class
ex) 파일내용읽기 - FileReader & BufferedReader 사용
package oop0611;
import java.io.BufferedReader;
import java.io.FileReader;
public class Test03_Input {
public static void main(String[] args) {
// 파일내용읽기
try{
//filereader - 파일내용을 볼 수 있따
String fileName="D:/java0514/workspace/basicJava/src/oop0610/Test02_SetMap.java";
//1) 파일 가져오기
FileReader in=new FileReader(fileName);
//2) 파일 내용읽기
BufferedReader br=new BufferedReader(in); //in변수에 내용을 담기
int num=0; //각 행 앞에 번호 붙이기
while(true){ //무한루프로 돌리고 마지막내용을 break걸어서 빼오기
//3) 엔터(\n), 줄의 끝(\r) 기준으로 한줄씩 가져오기
String line=br.readLine(); //파일내용의 각 라인을 한줄씩 가져오기
if(line==null){ //라인이 공백일때, 빠져나오기
break;
}//if end
//System.out.println(line);
System.out.printf("%3d %s\n", ++num , line); //행앞에 번호 붙이기
//20줄마다 밑줄긋기
if(num>0 && num%20==0){
System.out.println("---------------------------------------");
}//if end
}//while end
//4) 자원 반납(순서주의!)
br.close();
in.close();
}catch(Exception e){
System.out.println("실패:"+e);
}//try end
System.out.println("END");
}//main() end
}//class end
InputStream기반과 Reader기반 비교
1) FileInputStream : 1바이트 기반
-> 한글깨짐
try{
String fileName="D:/java0514/workspace/basicJava/src/oop0610/Test02_SetMap.java";
FileInputStream fis=new FileInputStream(fileName);
//커서의 기본 속성, 한뭉텅이 읽으면 커서는 그 다음값을 가리킴
int data=0;
while(true){
data=fis.read(); //1바이트 읽기
if(data==-1){ //파일의 끝(End Of File)인지?
break; //끝이오면 빠져나오기
}//if end
System.out.print((char)data); //파일의 형변환시켜준다.
}//while end
fis.close();
}catch(Exception e){
System.out.println("실패:"+e);
}//try end
출력결과
....
map.put("three", new Double(5.6));
//keyë ì¤ë³µì ì¸íì§ ìëë¤.
//map.put("one", "ë°ì§ì±"); //oneê³¼ ê°ì ì´ë¦ì¼ë¡ ì¸ìíë¤
map.put("four", "ìí¥ë¯¼"); //oneê³¼ì valueê° ê°ì ì ìë¤.
....
한글깨짐
api상에 메소드가 없으면, 부모함수의 메소드를 물려받겠다는 이야기. (ex, class FileReader)
2) FileReader : char(2바이트)기반
-> 한글 안깨짐
FileReader fr=new FileReader(fileName);
int data=0;
while(true){
data=fr.read();
if(data==-1){
break;
}//if end
System.out.print((char)data);
}//while end
fr.close();
출력결과
.....
//문) key값으로 "rea.do" 호출하면 value값으로 "net.bbs.Read" 출력하시오
// '=' 문자를 기준으로 문자열을 분리해서 = 앞의 문자열은 key,
// = 뒤의 문자열은 value로 map에 저장
//substring , tokenizer, split
....
쓰기모드
OutPut
만약, 출력파일(sungjuk.txt)이 없으면 파일은 생성된다(create)
있으면 추가(append) 또는 덮어쓰기(overwrite) 된다.
-----true---- --------false-------
FileWriter
'공부 > 자바 OOP' 카테고리의 다른 글
6월11일 - 문제) 성적프로그램 (메모장에 출력) (0) | 2019.06.12 |
---|---|
6월10일 - Java Collection Framework (0) | 2019.06.10 |
6월5일 - Abstract class + Interface (0) | 2019.06.05 |
6월4일 - 상속 + 객체지향(다향성, object) + exception (0) | 2019.06.04 |
6월3일 - 상속 (0) | 2019.06.03 |