java
-
Java 텍스트 파일 생성과 읽기를 이용한 누적시간 계산하기2014.12.29
-
대문자 소문자 서로 변환하기2013.10.08
-
java 문자열 구분자로 자르기2013.10.02
Java 텍스트 파일 생성과 읽기를 이용한 누적시간 계산하기
파일 I/O를 이용한 텍스트 파일 생성과 읽기를 이용한 간단한 누적시간계산하기
1. 처음 시간과 끝 시간을 구한 후
-> 끝 시간 - 처음 시간 = 총 소요시간
2. 텍스트 파일 유무를 체크 한 뒤
3.파일이 없다면(처음 기록하는 시간이므로) 총 누적시간 = 총 소요시간이므로 이 시간을 totaltime.txt에 기록
4. 만약 파일이 있었다면 총 누적시간 = 이전 누적시간 + 총 소요시간이다.
-이를 다시 totaltime.txt 기록한다.(덮어 쓰게 됨)
이런 순서로 진행된다.
Time.java
import java.io.*; import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.Date; public class Time { static Date dt = new Date(); static Time timer = new Time(); static SimpleDateFormat time = new SimpleDateFormat("yyyy-MM-dd, hh:mm:ss a"); static int playTimeCheck = 0; public long startTime() { long start = System.currentTimeMillis(); return start; } public long endTime() { long end = System.currentTimeMillis(); return end; } public long playTime(long l){ long longTime = 0; long end = timer.endTime(); //끝 시간 longTime = ( end - l ) / 1000; //끝 시간 빼기 처음시간 playTimeCheck = (int)longTime; // 플레이 시간 저장 System.out.println("플레이 시간 : " + (int)(longTime / 3600) + "시간 " + (int)(longTime % 3600 / 60) + "분 " + (int)(longTime % 3600 % 60) + "초"); return longTime; } public void totalTime(){ int total = 0; try { int play = playTimeCheck; //아까 계산한 플레이 시간 값 File file = new File("c:/totaltime.txt"); if(file.isFile()){ //totaltime.txt 존재 유무 체크 BufferedReader outReader = new BufferedReader(new FileReader("c:/totaltime.txt")); String read = outReader.readLine(); //누적 시간 읽기 total = Integer.parseInt(read); //읽은 값 total에 저장 total += play; //play시간과 total 더함 outReader.close(); BufferedWriter out = new BufferedWriter(new FileWriter("c:/totaltime.txt")); out.write(Integer.toString(total)); //합산된 total 값을 기록 out.close(); }else{ //파일이 없다면 BufferedWriter out = new BufferedWriter(new FileWriter("c:/totaltime.txt")); total = play; //처음에는 play시간이 곧 누적시간이므로 total에 play시간 대입 out.write(Integer.toString(total)); //파일에 기록 out.close(); } System.out.println("누적 플레이 시간 : " + ( total / 3600) + "시간 " + (total % 3600 / 60) + "분 " + (total % 3600 % 60) + "초"); } catch (IOException e) { System.err.println(e); // 에러가 있다면 메시지 출력 System.exit(1); } } }
public class TimeTest { public Time time = new Time(); //Time.java 객체선언 long startTime = 0; long endTime = 0; public void setUpGame() { startTime = time.startTime(); //시작과 동시에 시작시간 구함 } private void startPlaying() { finishGame(); } private void finishGame() { exitGame(); //끝날 때 시간 구함 } private void exitGame() { System.out.println("게임 종료"); time.totalTime(); //누적시간 계산 후 출력 } public static void main(String[] args) { DotComBust game = new DotComBust(); game.setUpGame(); game.startPlaying(); } }
대강 이런 식으로 사용가능하다..
'지식메모 > JAVA' 카테고리의 다른 글
JAVA JPasswordField 암호 값 가져오기 (0) | 2015.09.20 |
---|---|
문자열에서 숫자만 추출하기 (0) | 2015.09.02 |
숫자 천단위 콤마 입력하기 (0) | 2014.09.25 |
Json의 이해 (0) | 2013.11.05 |
대문자 소문자 서로 변환하기 (0) | 2013.10.08 |
대문자 소문자 서로 변환하기
String s="ABcdeFGhIJklmNop";
s=s.toUpperCase();
//모두 대문자로 바꾸기
s=s.toLowerCase();
/모두 소문자로 바꾸기
'지식메모 > JAVA' 카테고리의 다른 글
숫자 천단위 콤마 입력하기 (0) | 2014.09.25 |
---|---|
Json의 이해 (0) | 2013.11.05 |
java 문자열 구분자로 자르기 (0) | 2013.10.02 |
ObjectNode 와 JsonNode 차이? (0) | 2013.09.06 |
mp3 ID3 v2 태그 파싱하기 (3) | 2013.08.27 |
java 문자열 구분자로 자르기
구분자를 지정하여 하나 이상의 값을 구분하여 데이터를 배열에 집어넣고 그 값을 꺼내 사용한다.
쿼리를 날릴때 조건이 두 가지가 있을때 사용하였다.
public static splitFunction(String ktype){ //ktype을 받는다. String ktypeWhere = ""; //ktypeWhere는 공백상태 String[] array = ktype.split(","); //콤마 구분자로 배열에 ktype저장 for(String cha : array){ //배열 갯수만큼 포문이 돌아간다. /* ktypeWhere가 비어있다면 ktypeWhere 에 cha 값을 넣고 비어있지 않다면 * 기존 값에 ,를 추가하여 cha를 덧붙인다. */ ktypeWhere += (ktypeWhere.equals("")) ? "'"+cha+"'" : ",'"+cha+"'"; } }
주석 설명대로 처음에 String ktype을 받는다.
만약 사과를 받았다면 "사과" 값이 하나 들어가지만
사과 포도를 받았다면 "사과,포도" 라고 값이 들어간다.
※※※※※※※※※
, 콤마로 구분자를 주었다면 입력할때도,콤마를 꼭 넣어주어야 한다.
그냥 "사과 포도" 이렇게 써도 자동으로 콤마가 들어가지않는다.
"사과,포도"이래야 구분이 가능하다.
※※※※※※※※※※※※※
그러면
String[] array = ktype.split(",");
여기서 split 이라는 함수가 , 를 구분자로 인식해서
String[] array라는 배열에 0번째부터 사과 1번째에는 포도라고 저장한다.
그 다음 포문을 돌리는데 조건문이
for(String cha : array) 이므로
array 갯수만큼 포문을 돈다.
현재 사과 포도 2개가 있으므로 2번 돌게 된다.
그럼 삼항연산자를 이용해서
ktypeWhere += (ktypeWhere.equals("")) ? "'"+cha+"'" : ",'"+cha+"'";값을 넣어준다.
처음에 String ktypeWhere = ""; 이라고 선언했으니 비어있는 상태다.
ktypeWhere.equals("") ? "'"+cha+"'" : ",'"+cha+"'" ; ktypeWhere가 값이 ""이므로 비어있다면 ? cha 값을 ktypeWhere에 넣어주고 : 안 비어있다면 ,를 붙여 cha값을 추가한다.; |
삼항연산자는
조건문 ? 만족할때 실행 : 만족못할때 실행
이런 형식이다.
만약 if문으로 한다면
if(ktypeWhere.equals("")){ ktypeWhere = cha; }else{ ktypeWhere += ","+cha; }
이렇게 될 것이다.(맞나?)
그럼 사과 포도 데이터가 2개 있으니 처음 포문을 돌때는 ktypeWhere가 값이 비어있으니
ktypeWhere = "사과" 이다.
두번째 포문을 돌때는 이미 사과가 들어가 있으므로 ,를 이용해서 붙인다.
그래서 ktypeWhere = "사과,포도"이다.
그리고 쿼리에 넣을때는 ' '표시를 해줘야 하기 때문에 "'"+ 이 구문을 넣어주었다.
쿼리 쓸 일이 아니라면 안 넣어줘도 된다.
그런 다음 ktypeWhere 값을 갖다 쓰면된다.
'지식메모 > JAVA' 카테고리의 다른 글
숫자 천단위 콤마 입력하기 (0) | 2014.09.25 |
---|---|
Json의 이해 (0) | 2013.11.05 |
대문자 소문자 서로 변환하기 (0) | 2013.10.08 |
ObjectNode 와 JsonNode 차이? (0) | 2013.09.06 |
mp3 ID3 v2 태그 파싱하기 (3) | 2013.08.27 |
mp3 ID3 v2 태그 파싱하기
뭐가 뭔지 잘 모르겠지만 일단은 출력된다...
http://www.jthink.net/jaudiotagger/
여기서 왼쪽 하단에 downloads 탭에 Maven Release 에서
가장 최신으로 보이는 2.2.0-SNAPSHOT 으로 들어간다음
jaudiotagger-2.2.0-20130321.142353-1.jar
jar 파일을 다운 받아 프로젝트 속성에서 라이브러리를 추가해주었다.
jaudiotagger-2.2.0-20130321.142353-1.jar
자세한 소스분석은 모르겠다...
import java.io.File; import org.jaudiotagger.audio.AudioFileIO; import org.jaudiotagger.audio.mp3.MP3File; import org.jaudiotagger.tag.FieldKey; import org.jaudiotagger.tag.Tag; import org.jaudiotagger.tag.id3.AbstractID3v2Tag; public class test { public static void main(String[] args) throws Exception { String decoding = "ISO-8859-1"; String encoding = "EUC-KR"; File file = new File("/home/jeong/걸스데이-말해줘요.mp3"); MP3File mp3 = (MP3File) AudioFileIO.read(file); // ID3v24Tag tag24 = mp3.getID3v2TagAsv24(); AbstractID3v2Tag tag2 = mp3.getID3v2Tag(); Tag tag = mp3.getTag(); String title = tag.getFirst(FieldKey.TITLE); String artist = tag.getFirst(FieldKey.ARTIST); String album = tag.getFirst(FieldKey.ALBUM); String year = tag.getFirst(FieldKey.YEAR); String genre = tag.getFirst(FieldKey.GENRE); System.out.println("Tag : " + tag2); System.out.println("Song Name : " + title); System.out.println("Artist : " + artist); System.out.println("Album : " + album); System.out.println("Year : " + year); System.out.println("Genre : " + genre); } }
출력결과
Tag : Tag content: TIT2:Text="말해줘요"; TPE1:Text="걸스데이"; TALB:Text="GIRL`S DAY Party #6 [Digital Single]"; TCON:Text="아이돌"; TRCK:Text="1"; TYER:Text="2013"; TPE2:Text="걸스데이"; USLT:Language="English"; Lyrics="Intro> 우리 둘이 함께 해요 나를 혼자 두진 마 이 밤이 깊어져만 가 빨리 고백 (민아) 안해? 안해? 안할꺼야? A> (소진) You! 넌 내 맘을 너무 몰라 Oh You! 빛나는 저 파도같아 You! 왜 자꾸 애태우는지 (아이야아 아아 이 야이야) A` (혜리) (하나 하나 하나 둘 셋 넷!) 하면 솔직히 내게 말해줘 (니가 먼저 말해주면 안돼) Oh 부끄러워 부끄럽단 말야 B> (민아) 시원한 바람 아름다운 해변 이곳엔 너와 단 둘이 모든 걱정들은 저기 저 바다에 던져 버릴래 C> (다같이) 지금 말해줘요 말해줘요 말해줘요 (소진) 사실은 나를 좋아한다고 우릴 위한 저 바닷가로 빨리 떠나요 (다같이) 지금 말해줘요 말해줘요 말해줘요 (민아) 난 너 하나면 충분해 약속해 손가락 걸고 말해줘 말해줘요 말해줘 말해줘요 Rap> (유라) 다다른 여자보단 내가 나아 하나보단 둘이 아침부터 저녁까지 우리 둘이 (나나나나) 이 노래를 불러 Say 1!2!3!4! (민아) 야! 안 따라 부르냐? B> (혜리) 뜨거운 태양 부서지는 파도 이곳엔 너와 단 둘이 (민아) 모든 걱정들은 저기 저 하늘에 던져 버릴래 C> (다같이) 지금 말해줘요 말해줘요 말해줘요 (민아) 난 너하나면 충분해 약속해 손가락 걸고 말해줘 말해줘요 말해줘 말해줘요 Bridge> (유라) 오늘밤이 다 가기 전에 고백해줄래요 (소진) 사랑해 사랑해 달콤한 입술로 (민아) 아침을 깨워줄 그댄 너란 걸 C> (소진) 지금 말해줘요 나 사랑한다는 그 말 아끼지 말아요 두 손을 꼭 붙잡고 멀리 떠나요 (다같이-소진 애드립) 지금 말해줘요 말해줘요 말해줘요 (민아) 너와 이 여름안에서 영원히 함께 할래요 말해줘 말해줘요 말해줘 말해줘요 "; TLAN:Text="kor"; TPOS:Text="1"; APIC:MIMEType="image/jpeg"; PictureData="57966 bytes"; Song Name : 말해줘요 Artist : 걸스데이 Album : GIRL`S DAY Party #6 [Digital Single] Year : 2013 Genre : 아이돌 |
'지식메모 > JAVA' 카테고리의 다른 글
숫자 천단위 콤마 입력하기 (0) | 2014.09.25 |
---|---|
Json의 이해 (0) | 2013.11.05 |
대문자 소문자 서로 변환하기 (0) | 2013.10.08 |
java 문자열 구분자로 자르기 (0) | 2013.10.02 |
ObjectNode 와 JsonNode 차이? (0) | 2013.09.06 |