분류 전체보기
[Java] NIO 기반 입출력 - (2)NIO 파일과 디렉토리
IO는 파일의 속성을 읽기 위해 File 클래스만 제공한다. NIO는 더 다양한 파일의 속성 정보를 제공해주는 클래스와 인터페이스를 java.nio.file, java.nio.file.attribute 패키지에서 제공해준다. 📌경로 정의(Path) java.nio.file.Paths Path get(String first, String second, String... more) Path get(URI uri); 입력한 path 리턴 (절대 경로, 상대 경로 모두 가능) Path getFileName() 부모 경로를 제외한 파일 또는 디렉토리 이름만 가진 Path리턴 Path getName(int index) C:\Temp\dir\file.txt 일경우 index:0 이면 "Temp"의 Path 객체 리턴..
[Java] NIO 기반 입출력 - (1)NIO란?
📌NIO란? 새로운 입출력(New Input/Output)이라는 뜻이다. 자세한 설명하기에 앞서 NIO에서 제공하는 패키지에 대한 간략한 설명 표이다. NIO 패키지 포함되어 있는 내용 java.nio 다양한 버퍼 클래스 java.nio.channels 파일 채널, TCP 채널, UDP 채널 등의 클래스 java.nio.channels.spi java.nio.channels 패키지를 위한 서비스 제공자 클래스 java.nio.charset 문자셋, 인코더, 디코더 API java.nio.charset.spi java.nio.charset 패키지를 위한 서비스 제공자 클래스 java.nio.file 파일 및 파일 시스템에 접근하기 위한 클래스 java.nio.file.attribute 파일 및 파일 시스템..
[Java] TCP 네트워킹 - (4)스레드 병렬 처리
📌스레드 병렬 처리 연결 수락을 위해 ServerSocket의 accept()을 실행하거나, 서버 연결 요청을 위해 socket 생성자 또는 connect()를 실행할 경우에는 해당 작업이 완료되기 전까지 블로킹(blocking)된다. 데이터 통신을 할 때에도 마찬가지인데 InputStream의 read() 메소드는 상대방이 데이터를 보내기 전까지 블로킹되고, OutputStream의 wrtie() 메소드는 데이터를 완전하게 보내기 전까지 블로킹 된다. 즉 말하고자 하는 바는 ServerSocket과 Socket은 동기(블로킹) 방식으로 구동된다. 만약 서버를 실행시키는 main 스레드가 직접 입출력 작업을 담당하게 되면 입출력이 완료될 때 까지 다른 작업을 할 수 없게 된다. 서버 어플리케이션은 지속적..
[Java] IO 기반 입출력 - (1)입력 스트림과 출력 스트림
📌IO 패키지 소개 프로그램에선 데이터를 외부에서 읽고 다시 외부로 출력하는 작업이 빈번히 일어난다. 데이터는 사용자로부터 키보드를 통해 입력될 수도 있고, 파일 또는 네트워크로부터 입력될 수도 있다. 데이터는 반대로 모니터로 출력될 수도 있고, 파일로 출력되어 저장될 수도 있으며 네트워크로 출력되어 전송될 수 있다. Java에서 데이터는 Stream을 통해 입출력되므로 스트림의 특징을 잘 이해해야 한다. 📌입력 스트림과 출력 스트림 (InputStream & OutputStream) 프로그램이 데이터를 입력받을 때는 입력 스트림(InputStream)이라 부르고, 프로그램이 데이터를 보낼 때에는 출력 스트림(OutputStream)이라 부른다. 프로그램이 네트워크상의 다른 프로그램과 데이터 교환을 하기..
NSIS 2GB 용량 해결 (7z을 이용하여 해결!)
NSIS 경우 대용량 파일을 배포할 때 오류가 난다. 그 이유는 NSIS 자체가 2GB 이상 배포를 지원하지 않기 때문이다. 인스톨 쉴드 같은 경우 분할 패키지 파일로 배포를 할 수도 있지만 NSIS는 이 마저도 지원하지 않아 다른 방법으로 해결하여야 한다. 7zip(7z) 방식을 활용하는 방법인데, 7zip은 LZMA 방식으로 다른 압축 방법에 비해 압축 효율이 높다. 7z으로 압축된 파일을 풀기 위해선 nsis7z plug-in을 이용해야 한다. https://nsis.sourceforge.io/Nsis7z_plug-in Nsis7z plug-in - NSIS Download Nsis7z_19.00.7z (450 KB) 7-Zip 19.00; x86 + x64; ANSI + Unicode Nsis7z..
NSIS 64bit 32bit인지 확인 (레지스트리 값 확인 활용)
ReadRegStr $0 HKLM "SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion" "ProgramFilesDir" ${If} $0 == '' 32비트일 때 실행할 명령어 입력 ${Else} 64비트일 때 실행할 명령어 입력 ${EndIf} 참고) https://yeo-computerclass.tistory.com/152 [NSIS] 파일 존재 확인 / 레지스트리 값 존재 확인 파일 존재 확인 IIfFileExists "$INSTDIR\AstelliaClient" Yes No Yes: NO: 레지스트리 값 존재 확인 ReadRegstr $0 "레지스트리 경로" "레지스트리 이름" $0에 해당 레지스트리 경로, 이름의 값이 저장되고 만약.. yeo-comp..
NSIS 파일 존재 확인 / 레지스트리 값 존재 확인
파일 존재 확인 IIfFileExists "$INSTDIR\AstelliaClient" Yes No Yes: NO: 레지스트리 값 존재 확인 ReadRegstr $0 "레지스트리 경로" "레지스트리 이름" $0에 해당 레지스트리 경로, 이름의 값이 저장되고 만약 존재하지 않다면 빈 값이 저장된다.
NSIS 쉬운 문법 설명
HM NIS Edit으로 설정한 것들 ;HM NIS Edit Wizard helper defines !define PRODUCT_NAME "PRODUCT 명" !define PRODUCT_VERSION "버전" !define PRODUCT_PUBLISHER "회사이름, Inc." !define PRODUCT_DIR_REGKEY "Software\Microsoft" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" !define PRODUCT_UNINST_ROOT_KEY "HKLM" SetCompressor lzma ;압축 방법 (EX. lzma: 7z) NSIS의 주석은 ;(세미콜론..