package com.panelion.utils;
import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* - 파일과 관련된 기능 모음. -
* Readable , Writable 을 통하여, 읽기 기능, 쓰기 기능을 사용 할 수 있다.
* David.Woo - 2011.07.29
*
*/
public class FileUtils {
private File _file;
private BufferedReader _reader;
private BufferedWriter _writer;
public FileUtils(String filePath) throws IOException {
_file = new File(filePath);
this.mkDirs(_file.getParent());
if(!_file.exists()) _file.createNewFile();
}
public void createNewFile() throws IOException {
this.mkDirs(_file.getParent());
if(_file.exists()) _file.delete();
_file.createNewFile();
}
/**
* 디렉 토리를 생성 한다.
*/
public void mkDirs(String strDirPath) {
File dirFile = new File(strDirPath);
dirFile.mkdirs();
}
/**
* 파일을 읽기 전용 으로 세팅 한다.
* @param encoding encoding name
* @throws java.io.IOException 읽을 파일이 없을 경우 에러가 난다.
*/
public void setReadable(String encoding) throws IOException {
_reader = new BufferedReader(new InputStreamReader(new FileInputStream(_file), encoding));
}
/**
* 파일을 Row 단위로 읽는다.
* @return String Row
* @throws java.io.IOException 읽을 때 에러가 날 경우.
*/
public String getReadLine() throws IOException {
return _reader.readLine();
}
/**
* 파일을 쓰기 모드로 세팅 한다.
* @param continued 이어 쓰기 여부.
* @throws java.io.IOException IOException
*/
public void setWritable(boolean continued) throws IOException {
_writer = new BufferedWriter(new FileWriter(_file, continued));
}
/**
* 내용을 파일에 기록 한다.
* @param line 기록할 내용.
* @throws java.io.IOException 쓰기시 에러가 났을 경우.
*/
public void writeLine(String line) throws IOException {
_writer.write(line);
_writer.write(System.getProperty("line.separator"));
}
public void close() throws IOException {
if(_writer != null) _writer.close();
if(_reader != null) _reader.close();
if(_file != null) _file = null;
}
public List<Map<String, Object>> getHorizonTableFile() {
return this.getHorizonTableFile("UTF-8", "\t");
}
public List<Map<String, Object>> getHorizonTableFile(String strSplit) {
return this.getHorizonTableFile("UTF-8", strSplit);
}
public List<Map<String, Object>> getHorizonTableFile(String encoding, String strSplit) {
List<Map<String, Object>> tableData = new ArrayList<Map<String, Object>>();
List<String> columnList = new ArrayList<String>();
try {
this.setReadable(encoding);
String line;
int lineCount = 0;
while((line = this.getReadLine()) != null) {
// line no.1 is Column Define.
if(lineCount == 0) {
String[] cols = line.split(strSplit);
for(String col : cols) {
columnList.add(col.trim());
}
// Data rows
} else {
Map<String, Object> map = new HashMap<String, Object>();
String[] cols = line.split(strSplit, columnList.size());
for(int i = 0 ; i < columnList.size(); i++) {
map.put(columnList.get(i), (cols[i] == null) ? "" : cols[i].trim());
}
tableData.add(map);
}
lineCount++;
}
} catch (IOException e) {
e.printStackTrace();
}
return tableData;
}
public static void main(String[] args) throws IOException {
FileUtils fileUtils = new FileUtils("/home/david/test/test/test/1.txt");
// fileUtils.mkDirs();
}
}