파일을 사용하고 싶을때는 File 클래스를 사용한다.
File객체를 생성하고 ("파일의 경로") 를 적어준다.
위와 같이 이클립스 내에서 파일을 생성하는 경우
File file = new File("secret_message.txt");
위와 같이 경로를 설정하여 파일을 사용할 수 있다.
혹은 바탕화면에 파일을 생성한 경우에는 파일의 속성 -> 위치를 확인하여 경로를 적어줄 수 있다.
위의 경로를 복사하여 파일에 적어주면 이클립스 내에 파일이 없어도 실행 가능하다.
파일 클래스가 가지고 있는 메소드는 아래와 같다.
public static void main(String[] args) {
File file = new File("secret_message.txt");
if(file.exists()) {
System.out.println("That file exists!");
System.out.println(file.getPath());
System.out.println(file.getAbsolutePath()); //경로
System.out.println(file.isFile()); //파일이 있는지 확인
file.delete(); //파일을 삭제한다
} else {
System.out.println("doesnt't exist!");
}
파일에 쓰는 방법은 다음과 같다.
이클립스에 텍스트 파일 "poem2.txt" 을 생성하고 FileWriter로 파일의 경로를 적어준다.
write()함수를 사용하여 쓰고 싶은 글을 쓴다.
public static void main(String[] args) {
try {
FileWriter writer = new FileWriter("poem2.txt");
writer.write("Roses are red");
writer.close();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
그러면 해당하는 파일에서 다음과 같이 확인 가능하다.
public static void main(String[] args) {
try {
FileWriter writer = new FileWriter("poem2.txt");
writer.write("Roses are red\nViolets are blue\nBooty booty Booty booty Booty booty\n"); //줄바꿈
writer.append("\n(A poem by Bro)"); //추가하기
writer.close();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
파일을 읽는 방법은 다음과 같다.
바탕화면에 파일 "art.txt"를 생성하고 원하는 문구를 작성한다.
https://www.asciiart.eu/computers
나는 해당 사이트의 "computers"문구를 복사하여 사용했다
public static void main(String[] args) {
try {
FileReader reader = new FileReader("C:/Users/chzhz/OneDrive/바탕 화면/art.txt");
int data = reader.read();
while(data!=-1) {
System.out.print((char)data);
data=reader.read();
}
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
위와 같이 경로를 설정해주고 read()함수로 파일을 읽어온다.
read() 함수는 char형으로 파일의 내용을 받으며 int 값을 반환하는데, -1을 리턴한다면 파일이 없다는 의미이다.
그래서 != -1일때 파일 안의 문자를 읽어오도록 했다. char형이기 때문에 (char)로 타입 캐스팅을 해준다.
실행하면 아래와 같이 콘솔창에서 결과를 확인할 수 있다.
*File 관련 클래스들은 사용하고 나면 꼭 close를 해줘야 한다.
'Today I Learned' 카테고리의 다른 글
JAVA LayoutManager(배치관리자) : BorderLayout (0) | 2022.11.05 |
---|---|
자바 GUI 기초 - JFrame, JLabel, JPanel (0) | 2022.10.29 |
HTTP 1.1) http통신, stateless, mime 타입 (0) | 2022.01.13 |
스프링부트 프로젝트 생성하기 / 실행 error 해결하기 (0) | 2022.01.12 |
oauth의 동작원리 (0) | 2022.01.09 |