///////
Search

헛짓거리

작성 날짜
2022/10/12 14:17
작성자

1. 버퍼를 이용해 파일 읽고 쓰기

버퍼를 사용하는 이유
Filereader만 사용할 수도있지만 버퍼를 사용하는 것이 더 효율적임.
→ 버퍼를 사용하면 버퍼가 꽉 찰 때까지 기다렸다가 파일을 읽음.
버퍼가 차기전에 읽고 싶은 경우에는 reader.flush() 호출
한글자씩 읽어오기(오래걸려서 두글자만 읽게함)
public void readByChar(String address) throws IOException { FileReader fileReader = new FileReader(address); char rdChar1 = (char)fileReader.read(); System.out.println(rdChar1); char rdChar2 = (char)fileReader.read(); System.out.println(rdChar2); fileReader.close(); }
Java
복사
한줄씩 읽어오기
public void readByLine(String address) throws IOException { BufferedReader br = new BufferedReader(new FileReader(address)); String rdLine = null; while((rdLine = br.readLine()) != null) { System.out.println(rdLine); } br.close(); }
Java
복사
이제 읽는걸 성공했으면 써봐야지…
public void readByLine(String address) throws IOException { File pcData = new File("C:\\Users\\taege\\git\\LikeLion_Backend_School\\processedData.txt"); BufferedReader br = new BufferedReader(new FileReader(address)); BufferedWriter bw = new BufferedWriter(new FileWriter(pcData)); String rdLine = null; while((rdLine = br.readLine()) != null) { bw.write("Hi"); } br.close(); bw.close(); }
Java
복사
파일생성하기
File 파일이름 = new File(파일(주소 + 파일.확장자)
주의! bufferedWriter는 .close();를 해줘야 파일에 내용이 저장됨.
파일에 값 작성하기
public void writeByLine(String address) throws IOException { File pcData = new File("C:\\Users\\taege\\git\\LikeLion_Backend_School\\processedData.txt"); BufferedReader br = new BufferedReader(new FileReader(address)); BufferedWriter bw = new BufferedWriter(new FileWriter(pcData)); String rdLine = null; while((rdLine = br.readLine()) != null) { bw.write(rdLine+"\n"); } br.close(); bw.close(); }
Java
복사
원하는 내용만 작성하기
헛짓거리1
사유 :
PopulationMove 에서 parse메소드로 스트링배열값을 반환해 readFIle에서 ArrayList로 반환하려함.
읽은 라인을 → parse에서 “,”을 기준으로 split해 String[]으로 반환해옴 → 반환 값을 바로 ArrayList에 String타입으로 저장함.
결과 ⇒ 각각의 String[]배열 주소값이 ArrayList에 저장됨 그래서 Arraylist를 출력했을 때 배열의 주소값?들이 출력됨..
내가 생각해본 해결방법
1.
주소값을 이용하여 다시 데이터를 불러온다
2.
parse 와 readByLine의 반환형식을 바꾸기
3.
매핑하기 ⇒ 오버로딩을 통해 PopulationMove객체에 int 값으로 저장하기
내가 선택한방법
1번의 경우 가능할지 안할지 모르겠음 된다해도 코드가 더러울거같음 2번의 경우 가능할것같은데 코드가 너무 복잡해지고 중복코드도 많아질것같음.
3번 → 강사님이 하신방법 + 데이터를 사용하기에도 편할 것 같음.
⇒단점.. 코드 갈아엎어야함 + 게터와세터 공부해야함
결론 = 3번
어차피할건데 하자..
헛짓거리2
리턴을 PopulationMove 타입으로 설정해 ⇒ 리턴해줌
⇒ 당연히 하나의 객체에서 계속 초기화됨.
List를 제작해봐야겠음.