Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 계산맞추기 게임
- Do it 자바스크립트 + 제이쿼리 입문
- node.js 설치
- node.js로 로그인하기
- spring-boot
- 타자 게임 만들기
- JS 개념
- 모두의 파이썬
- intellij
- DB Browser
- Concurrently
- Spring-Framework
- 모던자바스크립트
- 자바스크립트
- 인프런
- 따라하며 배우는 노드 리액트 기본 강의
- googleColaboratory
- 노드에 리액트 추가하기
- Python
- vs code 내 node
- ReactDOM.render is no longer supported in React 18. Use createRoot instead
- 거북이 대포 게임
- intllij 내 Bean을 찾지 못해서 발생하는 오류
- react오류
- props
- 웹 게임을 만들며 배우는 리액트
- You are importing createRoot from "react-dom" which is not supported. You should instead import it from "react-dom/client"
- Colaboratory 글자 깨짐
- 리액트
- react
Archives
- Today
- Total
프로그래밍 삽질 중
[서버 문제] 웹페이지를 불러오고 html 파일로 저장하기 본문
※ 문제를 순서대로 정리한다라기보단 개인적으로 어렵다고 느낀 부분을 복습하다가 다시 정리하는 글
※ 배우는 단계라 설명이 이상하거나 미흡한 부분들이 존재, 참고한 사이트들을 링크로 남기니 그 곳 참조바람
[문제]
웹페이지 '깃허브'를 읽어온 내용을 확장자가 'html'인 파일로 저장하는 프로그램 작성하기
[생각할 부분]
1) 웹페이지를 이클립스로 가져온다(읽어오기)
2) 읽어온 부분을 콘솔창에 출력한다
3) 출력한 내용을 html 파일에 저장한다(저장경로 및 이름 : c:/temp/naver.html)
[문제 답]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.MalformedURLException;
import java.net.URL;
public class ReadGithub {
public static void main(String[] args) {
String urlStr = "https://github.com/";
try {
URL url = new URL(urlStr);
InputStream is =url.openStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
PrintWriter pw = new PrintWriter(System.out, true);
PrintWriter fw = new PrintWriter(new FileOutputStream("c:/temp/github.html"));
String line = "";
while ((line = br.readLine()) != null) {
pw.println(line);
fw.println(line);
fw.flush();
}
br.close();
is.close();
pw.close();
fw.close();
} catch(MalformedURLException e) {
e.printStackTrace();
} catch(IOException e) {
e.printStackTrace();
}
}
}
|
cs |
[답 설명 추가] - //표시부분이 설명 부분
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.MalformedURLException;
import java.net.URL;
public class ReadGithub {
public static void main(String[] args) {
String urlStr = "https://github.com/"; //읽어올 웹 페이지 지정하기
try { //try(실행코드) - catch(예외사항)문으로 진행됨
URL url = new URL(urlStr); //URL 클래스 이용
//문자 기반 스트림
//Reaer(BufferedReader, FileReader, InputStreamReader)
//Writer(BufferedWriter, FileWriter, OutputStreamWriter, PrintWriter)
InputStream is =url.openStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
//여러 인코딩 방식 중 UTF-8이용
//BufferedReader : 데이터 효율적으로 전송하기 위함
PrintWriter pw = new PrintWriter(System.out, true);
PrintWriter fw = new PrintWriter(new FileOutputStream("c:/temp/github.html"));
//FileWriter 대신 PrintWriter 사용하는 이유
//FileWriter는 byte 배열 대신 문자열 직접 사용 가능 But \r\n을 문자열 뒤에 붙여야 함
//PrintWritersms \r]n문자열을 덧붙이는 대신 println이라는 매서드 사용 가능
//설명 참고한 사이트 : wikidocs.net/227
String line = ""; //읽어올 값이 문자이기 때문에 문자열인 line 변수를 만듦
//if) 숫자형일 경우(이 경우는 파일을 스트림(byte) 단위로 읽을 때 더 적합함)
//int count;
//while ((count = br.read()) != -1) { }
//더 이상 입력스트림으로부터 바이트를 읽게 될 수 없게 되면 -1 리턴 = 파일의 끝 도달
while ((line = br.readLine()) != null) { //파일의 끝에 도달
pw.println(line); //writer를 통해 쓴 값들을 String line으로 표시
fw.println(line);
fw.flush();
//flush : 출력을 쓸어내림, out이 가진 단점
//(한 번에 출력하므로 명령 입력 시점과 출력 시점이 달라 시간차 발생) 보완, 버퍼를 청소
}
is.close(); //입력 스트림 닫기
br.close(); //출력스트림 닫기
pw.close();
fw.close();
//oo.close(); : 사용한 파일 객체를 닫아주는 것(생략 가능하나 사용했던 파일을 다시 사용할 경우 오류 발생)
//스트림 사용 후 닫아놓는 습관을 들이기(오류 가능성 낮아짐)
// e값 : 변수 값(보통 e를 사용)
} catch(MalformedURLException e) { //URL 관련 예외사항
e.printStackTrace();
} catch(IOException e) { //Exception(예외의 한 종류), IOExceptio만 따로 처리하기 위해서는 catch 순서 변경 필요
e.printStackTrace();
//printStackTrace() : 리턴값 존재x, 메소드가 내부적으로 예외결과를 화면에 출력
//가장 자세한 예외 정보를 제공(예외의 값으로 가장 많이 사용)
//설명 참고한 사이트 : opentutorials.org/course/2517/14145
}
}
}
|
cs |
[결과값] - 이클립스 화면
[결과값 - C드라이브 temp파일에 저장함 - 노란색 표시]
[결과 - 웹사이트 화면 출력]
'과거 프로그래밍 자료들 > 자바(Java)' 카테고리의 다른 글
JSP 디렉티브 태그(page, include, taglib) (0) | 2021.04.08 |
---|---|
JSP 전반적인 설명 및 스크립트 태그(+스크립틀릿 태그) (0) | 2021.04.08 |
서버와 클라이언트 설명 및 예시(1) - InetAddress 위주 (0) | 2021.03.11 |
입출력 스트림 설명 및 예시 (0) | 2021.03.10 |
쓰레드(Thread) 설명 및 문제 (0) | 2021.03.09 |