[java] list에  map, hashmap 한줄로 put, add 처리 하기



테스트 코드를 작성하다가 List에  map 을 담은 객체를 생성하는데 한줄에 생성하는 방법



1
2
3
4
5
6
7
8
 
List<Map<StringString>> ipList = new ArrayList<Map<String,String>>(); 
 
ipList.addnew HashMap<StringString>(){{ put("ip""127.0.0.1"); }} ); 
 
ipList.addnew HashMap<StringString>(){{ put("ip""127.0.0.2"); }} );
 
....
cs


'Programming > Java' 카테고리의 다른 글

[java] 파일 읽기 / 쓰기/ 폴더 생성 (java file write)  (0) 2018.08.20
블로그 이미지

NDay

일상 메모장... ㅎ

,

특정 폴더에 있는 파일 리스트를 읽어와  

특정 문자열만 편집해서 

output 폴더를 만들고  _del.txt 파일로 다시 저장한다.


ps / 

- IDE를 윈도우에서 사용할 경우

다시 저장한 파일의 내용을 리눅스에 가져가서 shell 등에서 사용하면

윈도우와 리눅스의 줄바꿈의 차이로 에러가 발생할 수 있다.

리눅스에서 사용하려면 newLine() 함수가 아닌 \n을 사용하면 된다.

- 에러 예시 > /bin/sh^M: bad interpreter: No such file or directory


# 소스파일 첨부

FileReadAndSave.java




package test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/**
* 특정 폴더에 있는 파일 리스트를 읽어와
* 특정 문자열만 편집해서
* output 폴더를 만들고 _del.txt 파일로 다시 저장한다.
*
* @author NDAY
*
*/
public class FileReadAndSave {
public static void main(String[] args) {
String path = "D:\\aviBatch\\logs2";
File dirFile = new File(path);
File[] fileList = dirFile.listFiles();
FileReader fileReader = null;
BufferedReader bufReader = null;
File newFile = null;
BufferedWriter bufferedWriter = null;
for (File tempFile : fileList) {
if (tempFile.isFile()) {
String tempPath = tempFile.getParent();
String tempFileName = tempFile.getName();
//System.out.println("Path=" + tempPath+", FileName="+tempFileName);
try {
fileReader = new FileReader(tempFile);
bufReader = new BufferedReader(fileReader);
String line="";
// output 폴더 생성
String newFileDirPath = path + File.separator + "output";
File dir = new File(newFileDirPath);
if(!dir.exists()){
dir.mkdirs(); //디렉토리 생성 메서드
}
// 새로 생성될 파일
newFile = new File(newFileDirPath+File.separator + tempFileName + "_del.txt");
bufferedWriter = new BufferedWriter(new FileWriter(newFile));
bufferedWriter.write( "#!/bin/sh" );
//bufferedWriter.newLine(); // 돌아가는 OS에 따라서 다른 문자가 찍히기때문에 리눅스용은 별도로 해줘야 한다.
bufferedWriter.write("\n"); // 리눅스는 \n 으로 줄바꿈
System.out.println("fileName="+newFile.getName());
while((line = bufReader.readLine()) != null ){
if(line.indexOf("cmdStr:rm") > -1){
//System.out.println(">> "+line.substring( line.indexOf("rm")) );
//bufferedWriter.newLine(); // 윈도우 -> \r\n
bufferedWriter.write("\n"); // 리눅스 -> \n
bufferedWriter.write( line.substring( line.indexOf("rm")) );
}
else{
//System.out.println(">> "+line);
}
}
bufReader.close();
fileReader.close();
bufferedWriter.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}


'Programming > Java' 카테고리의 다른 글

[java] map, hashmap 한줄로 put 처리 하기  (0) 2018.08.20
블로그 이미지

NDay

일상 메모장... ㅎ

,
# db, client 의 케릭터셋이 아닌 테이블과, 필드의 케릭터셋 변경 하기.
# 테이블 케릭터셋 변경
 ALTER TABLE 'radreply' DEFAULT CHARACTER SET euckr COLLATE euckr_korean_ci;
 ALTER TABLE 'radreply' DEFAULT CHARACTER SET utf8 COLLATE 
utf8_general_ci;

# 확인 
mysql> show create table [테이블명];



# 필드(컬럼)의 케릭터셋 변경 방법
# radreply 라는 테이블의 value라는 필드의 케릭터셋을 euckr로 변경하기
alter table radreply modify value varchar(253) character set euckr NOT NULL default '' 
# 확인 
mysql> show create table [테이블명];


PS : 변경시 modifiy 와 change를 사용할 수 있는데 이부분은 검색!!!!

 - change 사용 예

alter table radreply change value value varchar(253) character set euckr NOT NULL default ''


 

'Programming > DB' 카테고리의 다른 글

[MySQL] characterset 변경  (0) 2011.04.20
MySQL 기본  (0) 2011.03.31
블로그 이미지

NDay

일상 메모장... ㅎ

,
1) VI 에서 임시 셋팅 방법
set encoding=euc-kr, utf-8
이랬던게  : 뛛1m~K~X웛1m~]´ 웛1m~\¼훛1 
잘 나옴 :  HOME♥에 

 2)
[###]$ export LANG=en_US.UTF-8; 
[###]$ export LANG=ko_KR.eucKR;  
블로그 이미지

NDay

일상 메모장... ㅎ

,
# 설정값 확인
mysql> status
--------------
mysql  Ver 14.14 Distrib 5.1.46, for pc-linux-gnu (i686) using readline 5.1

Connection id:          2478864
Current database:       [db명]
Current user:           [유저명]@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.1.46-log MySQL Community Server (GPL)
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    latin1
Conn.  characterset:    latin1
UNIX socket:            /tmp/mysql.sock
Uptime:                 50 days 14 hours 29 min 13 sec

Threads: 27  Questions: 24232435  Slow queries: 11525  Opens: 47160  Flush tables: 1  Open tables: 434  Queries per second avg: 5.542
--------------
 
# 변경 전 한글이 정상적으로 보이지 안는다.
 mysql> select * from code;
+-----+------+------+-------------+
| idx | kind | code | description |
+-----+------+------+-------------+
|  16 | POLI | 04   | ??? ??      |
+-----+------+------+-------------+
12 rows in set (0.01 sec)st

client characterset 변경하기 (현재 세션에서만 적용 됨. 재접속시 다시 해줘야 하는 불편함이 있음.)
mysql> set names utf8;
Query OK, 0 rows affected (0.00 sec)

mysql> status 확인해보면 다음처럼 변경 됨.
~~
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    utf8
Conn.  characterset:    utf8
~~

# Db     characterset 변경방법 
set character_set_database = utf8

mysql> status 확인
~~
Server characterset:    latin1
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
 


=================================================================


 기타
 
불친절한다래아빠 08-04-03 17:33
 
default character set utf8 collate utf8_general_ci; 

를 하지 않고 기본적으로 알아서 utf8로 잡히게 할 수는 없나요?
 
  
전진하는아르고 08-04-03 17:38
 
부팅시에 --default-character-set=utf8 옵션을 주시고 시작해보세요. 
그러면 부팅시 모든 옵션값들이 utf8 이 기본설정이 됩니다. 

기존에 euckr 로 잡히는건 현재 접속한 db 를 생성할때 euckr 로 설정되어서 그렇습니다. 
alter database db명 default character set utf8; 이렇게 바꿔주시면 되고 재접속 
(세션종료후 다시 접속)해도 바뀌지 않고 적용이 됩니다.
  
불친절한다래아빠 08-04-03 17:37
 
alter database db명 default character set utf8 collate utf8_general_ci; 

감사합니다. 생각해보니까 애시당초 database 생성시에 기본 값으로 주면 되는 거였네요;;; 

아르고님 정말 감사합니다.


기타

mysql 4.1의 경우에는 접속 시 'client characterset'이 기본적으로 'latin1'이 되어 버린다.

이 경우 'server characterset', 'database characterset'이 모두 'euckr'로 설정이 되어 있다하더라도 한글 깨짐 현상이 나타나게 된다.

 

이러한 문제를 해결하기 위해서 'client characterset'을 변경해야 하는데, 방법은 mysql 접속 후

'set names euckr'

을 실행하게 되면, 'client characterset'이 'euckr'로 변경이 되면서, 한글깨짐 문제가 해결된다.

물론 그 전에 'server characterset', 'database characterset'은 모두 'euckr'로 되어 있어야 한다.

 

[현재 characterset 설정 확인]

mysql> show variables like 'char%';

 

[client characterset 변경]

mysql> set names [변경하고자 하는 characterset 명칭];

 

[database characterset 변경]

mysql> alter database [DB명칭] character set [변경하고자 하는 characterset 명칭]; 

==========================================================

참고 URL
http://cafe.naver.com/inmacbook.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=349087&  

'Programming > DB' 카테고리의 다른 글

[MySQL] characterset 변경 [table, field]  (0) 2011.08.01
MySQL 기본  (0) 2011.03.31
블로그 이미지

NDay

일상 메모장... ㅎ

,

MySQL 기본

Programming/DB 2011. 3. 31. 01:17
  • root 비밀번호 설정하기 (최초)
    mysql> USE mysql;  //mysql DB를 선택
    Database changed
     
    mysql> UPDATE user SET paaword=password('123456') WHERE use = 'root';  // pw update
    Query OK, 2rows affected(0.00 sec)
    Rows matched:2 Changed:2 Warnings:0
     
    //mysql의 user테이블을 변경시 flush privileges를 실행하여 변경된 내용을 다시 읽어들임.
    mysql> FLUSH PRIVILEGES;  
    Query OK, rows affected (0.00 sec)
     
    mysql>
     
  • 데이터베이스 생성
    - 형식 : CREATE DATABASE [생성할DB명]
    mysql> create database testdb;
    Query OK, 1 row affected (0.00 sec)

  • 데이터베이스 삭제
    -형식 : DROP DATABASE [DB명]
    mysql> drop database testdb;
     Query OK, 0 row affected (0.00 sec)

  • 테이블 수정하기 (필드 추가)
    - 형식 : ALTER TABLE [테이블명] ADD COLUMN [필드명] [자료형] [순서]
    mysql> ALTER TABLE testTable ADD COLUMN postId INT(11) first;
    Query OK, 0 row affected (0.00 sec)
    Records: 0  Duplicates: 0  Warnings: 0

    // 필드 맨 마지막에 추가하려면 순서를 입력하지 않는다.
    // 필드를 특정 필드 다음에 추가하려면 순서에 'after 필드명'을 입력한다.
     
  • 테이블 수정하기 (필드 삭제)
    - 형식 : ALTER TABLE [테이블명] DROP [필드명]
    mysql> ALTER TABLE testTable DROP postId;
    Query OK, 0 row affected (0.00 sec)
    Records: 0  Duplicates: 0  Warnings: 0

  • 테이블 수정하기 (필드 이름 변경)
    - 형식 : ALTER TABLE [테이블명] CHANGE [기존필드명] [변경할필드명] [자료형]
    mysql> ALTER TABLE testTable CHANGE postId cmtId INT(11);
    Query OK, 0 row affected (0.00 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    // postId 필드의 이름이 cmtId로 변경됨.

'Programming > DB' 카테고리의 다른 글

[MySQL] characterset 변경 [table, field]  (0) 2011.08.01
[MySQL] characterset 변경  (0) 2011.04.20
블로그 이미지

NDay

일상 메모장... ㅎ

,