스트림(Stream)은 '작은 하천' 혹은 '시냇물'이라는 뜻의 단어이고 프로그래밍 언어에서는 주로 어떤 데이터의 흐름을 말한다. (데이터를 담고 있는 저장소(컬렉션) x) java.io의 Stream이 아니라, java8에 나온 java.util의 Stream API를 말한다. 스트림 API의 주된 목적은 매우 복잡하고 어려운 데이터 처리 작업을 쉽게 조회하고 필터링하고 변환하고 처리할 수 있도록 하는 것이다. 스트림 특징 스트림은 불변 객체다. Stream 객체의 메서드 호출 결과로 리턴 받은 Stream 객체는 새로 생성한 데이터다. 불변인 이유는 Stream은 중간 연산 작업과 함께 병렬 처리가 가능하기 때문에 데이터 정합성을 확보하기 위해서다. 중간 연산(Intermediate operation..
test 디렉토리 안에 여러 파일들이 있다. 이 중 파일명이 JPG로 끝나는 파일들만 추출하고 싶다면, FileNameFilter 인터페이스를 구현해서 쉽게 찾을 수 있다. D ㄴtest ㄴamericano.JPG ㄴcafelatte.JPG ㄴFile.md ㄴlayout.html ㄴtest.txt public class FileExample2 { public static void main(String[] args) throws Exception { File f = new File("D:\\test\\"); File[] fileList = f.listFiles(new FilenameFilter() { @Override public boolean accept(File dir, String name) { re..
java.io.File 메서드 설명 boolean canRead() 읽을 수 있는 파일인지 검사한다. boolean canWrite() 쓸 수 있는 파일인지 검사한다 boolean canExecute() 실행할 수 있는 파일인지 검사한다 int compareTo(File pathName) 지정한 파일(pathname)과 비교한다 boolean exist() 파일이 존재하는지 검사한다. boolean isAbsolute() 파일 또는 디렉토리가 절대경로명으로 지정되었는지 확인한다 boolean isDirectory() 디렉토리인지 확인한다 boolean isFile() 파일인지 확인한다. boolean createNewFile() 아무런 내용이 없는 새로운 파일을 생성한다. (단, 이미 생성하려는 파일이 ..
getPath() : 파일의 경로(path)를 반환한다. getAbsolutePath() : 파일의 절대경로를 반환한다. getCanonicalPath() : 파일의 정규경로를 반환한다. 파일의 '경로', '절대경로', '정규경로'... 분명히 한글인데... 무슨 차이인지 이해가 되지 않았다. 절대경로는 알아도 정규경로(canonical path)는 처음 들어봤다. 경로를 변경하면서 세 메서드의 차이를 알아보자. 1. 경로명 -> 절대경로 public class FileExample { public static void main(String[] args) throws Exception { File f = new File("C:\\Spring\\java-pract..
들어가며 HTML 코드가 들어가 있는 데이터를 문자열만 추출해야 할 상황이 생겼다. 정규식을 사용해서 어찌저찌 태그는 다 제거했는데 Html Entity로 표기된 특수문자는 그대로 남아있었다. 처음엔 만 공백으로 치환했다. 그런데 데이터를 더 확인해보니 자주 쓰이는 >, <, 그 외 &숫자;형식으로 된 처음 보는 Entity들이 가득했다. 일일히 replace하기를 포기하고... 구글링을 해본다. ...역시 사람은 도구(?)를 사용해야 할 줄 안다고. 아파치와 스프링에서 관련 Util 클래스를 제공해주고 있었다. HTML Entity? HTML에서
Optional 기초 : NPE에서 벗어나보자. 들어가며 WAS log에서 NullPointerException을 발견했던 과거 발생 시점을 추적하기가 어려웠다. 스택 트레이스 보는데도 모르겠음. 메서드를 짜는데 객체가 없을 경우 null을 리턴 x 100(반복) null 체크를 계속 해야 하는 불편. 코드가 거슬린다. (if 널 존재여부...) 까먹었을까봐 불안하다. 그러던 중 스프링 강의에서 객체를 Optional로 감싸 NPE를 막는 걸 발견 => 배워야겠다. Optional은 람다, 스트림을 알아야 더 사용하기 좋지만...아직 사용하지 못한다. 그저 Optional만 알았을 뿐. 때문에 람다와 스트림을 몰라도 써먹을 수 있는 Optional의 기초만 정리해보도록 한다. Optional Option..
사용자가 단을 입력하면 해당 구구단을 자동 출력해주는 예제이다. 2단부터 9단까지만 출력하도록 제한하는 예제이기 때문에 올바른 수가 입력될 때까지 루프를 반복한다. MultiplicationTable.java import java.util.Scanner; public class MultiplicationTable { public static void main(String[] args) { int num; Scanner sc = new Scanner(System.in); System.out.println("----구구단 출력-----"); while(true) { System.out.print("단? "); num = sc.nextInt(); if (num 1) break; Sys..
스택(Stack) 스택(Stack)은 LIFO(Last In First Out)구조로 마지막에 저장한 데이터가 먼저 나온다. 예를 들면 1,2,3이라는 데이터를 넣으면 뺄 때는 반대로 3,2,1 역순으로 출력되는 것이다. 자바에서는 java.util에 Stack이 제공되지만 Stack의 구현 원리는 간단하기 때문에 알아둬서 나쁠게 없다. 특히, 배열을 resizing하는 부분은 java.util.Stack만 쓰던 나에게 아차 싶었던 부분... 예전에 배웠는데 까맣게 잊어버리고 있었다. 다시는 잊지 않도록 정리해본다..ㅠㅠ MyStack.java 1234567891011121314151617181920212223242526272829303132333435363738394041424344public clas..
- Total
- Today
- Yesterday
- file
- github actions 구성요소
- getCanonicalPath
- 정규경로
- 특수문자 치환
- MPEG-2 TS
- opencsv
- HtmlUtils
- 문자열인코딩과 문자집합의 차이
- Best Time to Buy and Sell Stock
- Longest Consecutive Sequence
- sockjs
- 코프링
- getAbsolutePath와
- 다이나믹프록시
- 정규표현식 플래그
- FileNameFilter
- csv 라이브러리
- self-descriptive
- hls.js
- websocket handshake
- 정규표현식 패턴
- 그런RESTAPI로괜찮은가
- github actions 기초
- github actions components
- csv to bean
- CGLIB프록시
- AOP
- java8 stream
- getPath
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |