이전 포스팅에서는 자바에서 소스 코드를 컴파일하는 방법에 대한 예제를 알아보았습니다. javac 명령어를 사용하여 소스 코드를 컴파일하고 .class 파일을 생성할 수 있습니다. 이러한 class 파일은 java 명령어로 실행이 가능합니다. 따라서 본 블로그의 자바 포스팅 예제들을 직접 소스 코드를 작성하여 실행해보기 위해서는 이러한 javac 명령어로 컴파일 방법을 학습해야합니다. 아직 javac 명령어로 자바 소스 코드 컴파일 방법을 잘 모르신다면 아래 링크를 참고해주세요.
2023.08.10 - [Linux] - [Linux/Java] 리눅스 우분투에서 java 컴파일 및 실행 예제(javac)
다음으로 이전 포스팅에서는 로컬에 저장된 파일을 복사하는 방법을 보여주는 예제를 알아보았습니다. FileInputStream 및 FileOutputStream을 사용하여 파일을 읽고 쓰는 방법을 설명합니다. 원본의 파일 데이터를 읽고 다른 경로에 똑같은 데이터를 작성하여 원본과 동일한 복사본 파일을 생성할 수 있습니다. 만약 자바에서 파일 복사 하는 방법이 궁금하시다면 아래 링크를 참고해주세요.
2023.08.14 - [Java] - [Java/Linux] 파일 복사하기 예제(FileInputStream)
마지막으로 이전 포스팅에서는 자바에서 실행 중인 스레드를 지정된 시간 동안 멈추게 하는 방법을 다루는 예제를 알아보았습니다. Thread.sleep() 메서드를 사용하여 일정 시간 동안 스레드를 일시 중지할 수 있습니다. 다만, 메인 스레드에서 sleep을 수행하게되면 전체 프로그램이 일시중지되기때문에 worker 스레드를 새로 생성하여 sleep을 수행할 수 있도록 프로그램을 설계해야합니다. 만약 자바에서 일시중지 기능이 궁금하시다면 아래 링크를 참고해주세요.
2023.08.16 - [Java] - [Java/Linux] sleep 일정시간 멈추기 및 활용 예제팅
아래는 사용자로부터 콘솔로 명령을 입력받아 MP3 파일 경로를 입력하고 MP3 파일을 재생하고 중지하는 기능을 구현하는 예제입니다. 사용자 입력 및 MP3 파일 재생 관련 코드를 다룹니다.
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.AudioInputStream;
import java.io.File;
import java.util.Scanner;
public class InteractiveMP3Player {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Clip clip = null;
while (true) {
System.out.print("명령을 입력하세요 (start, stop, exit): ");
String command = scanner.nextLine();
if ("exit".equalsIgnoreCase(command)) {
break; // 'exit' 입력 시 프로그램 종료
}
if ("start".equalsIgnoreCase(command)) {
if (clip != null && clip.isRunning()) {
System.out.println("이미 재생 중입니다.");
} else {
System.out.print("MP3 파일 경로를 입력하세요: ");
String mp3FilePath = scanner.nextLine();
try {
// AudioInputStream을 생성하여 MP3 파일 열기
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File(mp3FilePath));
// Clip을 생성하여 오디오 재생
clip = AudioSystem.getClip();
clip.open(audioInputStream);
System.out.println("재생 시작...");
clip.start(); // 재생 시작
} catch (Exception e) {
System.err.println("오류: " + e.getMessage());
}
}
} else if ("stop".equalsIgnoreCase(command)) {
if (clip != null && clip.isRunning()) {
clip.stop(); // 재생 중지
System.out.println("재생 중지.");
} else {
System.out.println("재생 중인 MP3가 없습니다.");
}
} else {
System.out.println("잘못된 명령입니다. 다시 입력하세요.");
}
}
// 사용 후에는 Clip 및 Scanner를 닫아 메모리 누수를 방지합니다.
if (clip != null) {
clip.close();
}
scanner.close();
}
}
아래는 MP3 파일을 재생하고 중지하여 결과를 확인하는 예제입니다. 실제 로컬에 저장된 MP3 파일이 시작되고 중지되는 것을 확인할 수 있습니다.