JAVA

JAVA File IO - 파일 읽고 쓰기 ( 문자, byteArray, 라인, 전체)

SDeveloper 2021. 5. 31. 00:10
반응형

 

File IO 테스트

 

[파일 읽기]

1. 문자별 읽기

	private static ArrayList<Character> readFileToCharsArray(String fileName) throws Exception {
		ArrayList<Character> charList = new ArrayList<Character>();
		File file = new File(fileName);
		FileReader filereader = new FileReader(file);
		int singleCh = 0;
		while ((singleCh = filereader.read()) != -1) {
			charList.add((char) singleCh);
		}
		filereader.close();
		return charList;
	}

 

2. 전체 byteArray 읽기

	private static byte[] readFileToByteArray(String fileName) throws Exception {
		File file = new File(fileName);
		return Files.readAllBytes(file.toPath());
	}

 

3. line 별 읽기

private static ArrayList<String> readFileToLines(String fileName) throws Exception {
		ArrayList<String> lines = new ArrayList<String>();
		File file = new File(fileName);
		FileReader filereader = new FileReader(file);
		BufferedReader bufReader = new BufferedReader(filereader);
		String line = "";
		while ((line = bufReader.readLine()) != null) {
			lines.add(line);
		}
		bufReader.close();
		return lines;
	}

 

4. 전체 라인 읽기

private static List<String> readFileToAllLines(String fileName) throws Exception {
		File file = new File(fileName);
		return Files.readAllLines(file.toPath(), StandardCharsets.UTF_8);
	}

 

[파일 쓰기]

1. ByteArray로 파일 쓰기

	private static void writeFileFromBytes(String fileName, byte[] bytesFile)  throws Exception {
		File lOutFile = new File(fileName);
        FileOutputStream lFileOutputStream = new FileOutputStream(lOutFile);
        lFileOutputStream.write(bytesFile);
        lFileOutputStream.close();
	}

2. 라인별 파일 쓰기

	private static void writeFileFromLines(String fileName, ArrayList<String> linesFile) throws Exception {
		File file = new File(fileName);
		FileWriter fileWriter = new FileWriter(file);
		for (String line : linesFile) {
			fileWriter.write(line);
			fileWriter.write("\r\n");
		}
		fileWriter.close();
	}

 

 

[전체 테스트 코드]

import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;

public class FileIoTest {

	public static void main(String[] args) {

		String fileName = "test.txt";
		String outFileName = "out.txt";
		try {
			ArrayList<Character> charsFile = readFileToCharsArray(fileName);
			byte[] bytesFile = readFileToByteArray(fileName);
			ArrayList<String> linesFile = readFileToLines(fileName);
			List<String> allLinesFile = readFileToAllLines(fileName);

			System.out.println("파일 읽기");
			System.out.println("1. charsFile :: 한 문자씩 파일 읽기");
			for (char c : charsFile) {
				System.out.print(c);
			}

			System.out.println("2. bytesFile :: 전체 바이트 파일 읽기");
			for (byte b : bytesFile) {
				System.out.print((char) b);
			}

			System.out.println("3. linesFile :: 한 라인씩 파일 읽기");
			for (String s : linesFile) {
				System.out.println(s);
			}

			System.out.println("4. allLinesFile :: 젙체 라인 파일 읽기");
			for (String s : allLinesFile) {
				System.out.println(s);
			}

			System.out.println("파일 쓰기");
			System.out.println("1. ByteArray 파일 쓰기");
			writeFileFromBytes(outFileName + "2", bytesFile);

			System.out.println("2. 라인별 파일 쓰기");
			writeFileFromLines(outFileName, linesFile);


		} catch (Exception e) {
		}

		System.exit(0);
	}

	private static void writeFileFromBytes(String fileName, byte[] bytesFile)  throws Exception {
		File lOutFile = new File(fileName);
        FileOutputStream lFileOutputStream = new FileOutputStream(lOutFile);
        lFileOutputStream.write(bytesFile);
        lFileOutputStream.close();
	}

	private static void writeFileFromLines(String fileName, ArrayList<String> linesFile) throws Exception {
		File file = new File(fileName);
		FileWriter fileWriter = new FileWriter(file);
		for (String line : linesFile) {
			fileWriter.write(line);
			fileWriter.write("\r\n");
		}
		fileWriter.close();
	}

	private static ArrayList<Character> readFileToCharsArray(String fileName) throws Exception {
		ArrayList<Character> charList = new ArrayList<Character>();
		File file = new File(fileName);
		FileReader filereader = new FileReader(file);
		int singleCh = 0;
		while ((singleCh = filereader.read()) != -1) {
			charList.add((char) singleCh);
		}
		filereader.close();
		return charList;
	}

	private static byte[] readFileToByteArray(String fileName) throws Exception {
		File file = new File(fileName);
		return Files.readAllBytes(file.toPath());
	}

	private static ArrayList<String> readFileToLines(String fileName) throws Exception {
		ArrayList<String> lines = new ArrayList<String>();
		File file = new File(fileName);
		FileReader filereader = new FileReader(file);
		BufferedReader bufReader = new BufferedReader(filereader);
		String line = "";
		while ((line = bufReader.readLine()) != null) {
			lines.add(line);
		}
		bufReader.close();
		return lines;
	}

	private static List<String> readFileToAllLines(String fileName) throws Exception {
		File file = new File(fileName);
		return Files.readAllLines(file.toPath(), StandardCharsets.UTF_8);
	}

}
반응형

'JAVA' 카테고리의 다른 글

JAVA Scanner 이용해서 인자 값 받기  (0) 2021.05.31