우아한 프로그래밍

파일 읽기

/**
	 * 파일을 읽는다.
	 * @param filePath
	 * @param fileName
	 * @param source
	 * @return
	 * @throws Exception
	 */
	public static List<String> readFile(String filePath, String fileName) throws Exception {
		return readFile( filePath,  fileName, DEFAULT_CHARSET);
	}

	/**
	 * 파일을 읽는다.
	 * @param filePath
	 * @param fileName
	 * @param source
	 * @return
	 * @throws Exception
	 */
	public static List<String> readFile(String filePath, String fileName, String charset) throws Exception {

			final List<String> list = new ArrayList<>();

	        // 타겟 파일
		 	File targetFile = new File(filePath + fileName);

		 	// 파일 없음
		 	if( !targetFile.exists()) {
		 		throw new FileNotFoundException();
		 	}
		 	// 파일 읽을 권한 없음
		 	if( !targetFile.canRead()) {
		 		throw new Exception("파일을 읽을 권한이 없습니다");
		 	}

		 	try (InputStream in = openInputStream(targetFile)) {
			 	final BufferedReader reader = new BufferedReader( (new InputStreamReader(in, Charsets.toCharset(charset))));
		        String line = reader.readLine();
		        while (line != null) {
		            list.add(line);
		            line = reader.readLine();
		        }
		   }
	       return list;
	}

 

파일 쓰기

/**
	 * 파일을 쓴다.
	 * @param filePath
	 * @param fileName
	 * @param source
	 * @return
	 * @throws Exception
	 */
	public static boolean writeFile(String filePath, String fileName, Object source) {
		return writeFile( filePath, fileName, source, DEFAULT_CHARSET);
	}

	/**
	 * 파일을 쓴다.
	 * @param filePath
	 * @param fileName
	 * @param source
	 * @return
	 * @throws Exception
	 */
	public static boolean writeFile(String filePath, String fileName, Object source, String charSet) {

		try {

			File targetFile = new File(filePath + fileName);
			// 바이트배열
			byte[] byteArray = null;

			// 바이트 배열일 경우
			if( source instanceof byte[]) {
				byteArray = (byte[])source;
			}
			// 파일일 경우
			else if(source instanceof File){
				BufferedReader in = null;
				try {
					byteArray = new byte[(int)((File)source).length()];
					in = new BufferedReader( new InputStreamReader( new FileInputStream((File)source), charSet));

					String src = "";
					String line = "";
					for( int i = 1; (line = in.readLine()) != null; i++) {
						src += line;
					}

					byteArray = src.getBytes(charSet);

					//in.read(byteArray);
				}catch (Exception e) {
					e.printStackTrace();
					return false;
				}finally {
					if( in != null) {
						in.close();
					}
				}
			}
			// 스트링일경우
			else if( source instanceof String){
				byteArray = ((String)source).getBytes(charSet);
			}

			writeByteArrayToFile(targetFile, byteArray);
			return true;

		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}

 

profile

우아한 프로그래밍

@자바조아!

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!