File/IO
file input/output
File Input:파일 읽기
File Output:파일 쓰기
File Api
File file = new File("C:\\Java Exam","Java Exam.txt");
//C:\\Java Exam","Java Exam.txt 이경로에 Java Exam.txt 이파일이 존재하면 true, 아니면 false
System.out.println(file.exists());
//C:\\Java Exam","Java Exam.txt 이경로에 Java Exam.txt 객체가 파일이면 true, 아니면 false
System.out.println(file.isFile());
//C:\\Java Exam","Java Exam.txt 이경로에 Java Exam.txt 객체가 폴더이면 true, 아니면 false
System.out.println(file.isDirectory());
//C:\\Java Exam","Java Exam.txt 이경로에 Java Exam.txt 이 객체의 절대경로
System.out.println(file.getAbsolutePath());
//C:\\Java Exam","Java Exam.txt 이경로에 Java Exam.txt 이 객체의 파일 명 혹은 폴더명
System.out.println(file.getName());
//크기(byte)
System.out.println(file.length());
// 파일의 마지막 수정시간
System.out.println(file.lastModified());
//현재 경로의 상위 경로
System.out.println(file.getParent());
// 현재 경로가 폴더일 경우, 하위의 모든 파일과 폴더목록을 배열로 반환.
System.out.println(file.listFiles());
재귀호출
자기가 자신을 부른다
단 끝점을 확실하게 해야한다.
파일쓰기


mkdir은 한번 호출할 때 하나의 폴더만 생성가능
그래서 호출을 하나씩 해줘야한다.

한번호출할 때 여러개의 폴더를 동시에 생성 가능
(실무에서는 mkdirs를 사용)
package com.ktdsuniversity.edu.fileread;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;
public class WriteTextFile {
public void makeDirectories(String path) {
File dir = new File(path);
if (!dir.exists()) {
dir.mkdirs(); // makeDirectory
}
}
public void makeAndWriteFile(String directoryStringPath,
String fileName,
List<String> fileDescription) {
File file = new File(directoryStringPath, fileName);
try {
Files.write(file.toPath(), fileDescription);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
WriteTextFile wtf = new WriteTextFile();
wtf.makeDirectories("C:\\java2\\file\\dir");
List<String> fileDesc = new ArrayList<>();
fileDesc.add("내용을 작성합니다.");
wtf.makeAndWriteFile("C:\\java2\\file\\dir", "wrteTest.txt", fileDesc);
}
}
똑같은 파일에 이름 바꿔주기?
package com.ktdsuniversity.edu.fileread;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;
public class WriteTextFile {
public void makeDirectory(String path) {
File dir =new File(path);
if(!dir.exists()) {
dir.mkdir(); //makeDirectory
}
}
public void makeDirectories(String path) {
File dir =new File(path);
if(!dir.exists()) {
dir.mkdirs(); //makeDirectory
}
}
public void makeAndWriteFile(String directoryStringPath,
String fileName,
List<String> fileDescription) {
File file = new File(directoryStringPath,fileName);
// 파일을 생성할 폴더가 없다면 폴더를 생성해 준다.
if(!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
//동일한 파일명이 없을 떄 까지 순번을 증가시켜주는 기능.
//파일이 존재하지 않을 때 까지 반복.
int index = 1;
String newFileName=null;
while(file.exists()) {
//writeTest.txt ==> writeTest().txt
//writeTest.txt ==>writeTest
newFileName = fileName.substring(0,fileName.lastIndexOf("."));
//writeTest -> writeTest(1)
newFileName += "("+(index++)+ ")";
//writeTest(1) -> writeTest(1).txt
newFileName += fileName.substring(fileName.lastIndexOf("."));
file = new File(directoryStringPath, newFileName);
}
try {
Files.write(file.toPath(), fileDescription);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
WriteTextFile wtf = new WriteTextFile();
wtf.makeDirectory("C:\\java");
wtf.makeDirectory("C:\\java\\file");
wtf.makeDirectory("C:\\java\\file\\dir");
wtf.makeDirectories("C:\\java2\\file\\dir");
List<String> fileDesc = new ArrayList<>();
fileDesc.add("내용을 작성합니다.");
wtf.makeAndWriteFile("C:\\java3\\file\\dir", "wrteTest.txt", fileDesc);
}
}
파일삭제
excel파일 받아오기
package com.ktdsuniversity.edu.fileread;
import java.io.File;
import java.io.IOException;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ReadExcel {
public static void main(String[] args) {
//Workbook <===Excel File
//Sheet <=== Sheet
//Row<List> <=== 1행, 2행
//Cell<List> <== A열, B열
File excelFile = new File("C:\\Java Exam", "exceltest.xlsx");
Workbook readExcelWorkbook = null;
try {
readExcelWorkbook=new XSSFWorkbook(excelFile);
} catch (InvalidFormatException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(readExcelWorkbook!=null) {
//Sheet
//가장 첫번째 sheet를 가져옴
Sheet sheet = readExcelWorkbook.getSheetAt(0);
int rowCount = sheet.getLastRowNum();
for(int i=0; i<=rowCount; i++) {
Row row = sheet.getRow(i);
// 행안에 데이터가 존재하는 마지막 열의 번호
int cellCount=row.getLastCellNum();
for(int j=0; j<cellCount; j++) {
//열
Cell cell = row.getCell(j);
//열에 존재하는 값을 출력.
System.out.println(cell.getStringCellValue());
}
}
}
//파일 쓰기
try {
readExcelWorkbook.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}