자바 파일 기본 조작 총화
public static void main(String[] args) {
//
File directory = new File("D:/temp");
boolean directoryDoesNotExists = ! directory.exists();
if (directoryDoesNotExists) {
// mkdir
// mkdirs
directory.mkdirs();
}
//
File file = new File("D:/temp/test.txt");
boolean fileDoesNotExsits = ! file.exists();
if (fileDoesNotExsits) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
// directory
File[] files = directory.listFiles();
for (File file1 : files) {
System.out.println(file1.getPath());
}
}
실행 결과:D:\temp\test.txt
Java NIO
자바 7 이 제기 한 NIO 패키지,새로운 파일 시스템 클래스 제시
파일 상대 경로
목록 을 옮 겨 다 니 며디 렉 터 리 삭제
Path 류
public static void main(String[] args) {
// Path java.io.File
Path path = FileSystems.getDefault().getPath("D:/temp", "abc.txt");
// D:/ 1 D:/temp 2
System.out.println(path.getNameCount());
// File toPath() Path
File file = new File("D:/temp/abc.txt");
Path path1 = file.toPath();
System.out.println(path.compareTo(path1)); // 0 path
// Path
Path path3 = Paths.get("D:/temp", "abc.txt");
//
System.out.println(" : " + Files.isReadable(path));
}
파일 클래스
public static void main(String[] args) {
//
moveFile();
//
fileAttributes();
//
createDirectory();
}
private static void createDirectory() {
Path path = Paths.get("D:/temp/test");
try {
//
if (Files.notExists(path)) {
Files.createDirectory(path);
} else {
System.out.println(" ");
}
Path path2 = path.resolve("a.java");
Path path3 = path.resolve("b.java");
Path path4 = path.resolve("c.txt");
Path path5 = path.resolve("d.jpg");
Files.createFile(path2);
Files.createFile(path3);
Files.createFile(path4);
Files.createFile(path5);
//
DirectoryStream<Path> listDirectory = Files.newDirectoryStream(path);
for (Path path1 : listDirectory) {
System.out.println(path1.getFileName());
}
// , java txt
DirectoryStream<Path> pathsFilter = Files.newDirectoryStream(path, "*.{java,txt}");
for (Path item : pathsFilter) {
System.out.println(item.getFileName());
}
} catch (Exception e) {
e.printStackTrace();
}
}
@SuppressWarnings("all")
private static void fileAttributes() {
Path path = Paths.get("D:/temp");
//
System.out.println(Files.isDirectory(path, LinkOption.NOFOLLOW_LINKS));
try {
//
BasicFileAttributes attributes = Files.readAttributes(path, BasicFileAttributes.class);
//
System.out.println(attributes.isDirectory());
//
System.out.println(new Date(attributes.lastModifiedTime().toMillis()).toLocaleString());
} catch (Exception e) {
e.printStackTrace();
}
}
private static void moveFile() {
Path from = Paths.get("D:/temp", "text.txt");
// D:/temp/test/text.txt,
Path to = from.getParent().resolve("test/text.txt");
try {
// bytes
System.out.println(Files.size(from));
// ,
Files.move(from, to, StandardCopyOption.REPLACE_EXISTING);
} catch (Exception e) {
e.printStackTrace();
}
}
지정 한 파일 찾기
public class Demo2 {
public static void main(String[] args) {
// .jpg
String ext = "*.jpg";
Path fileTree = Paths.get("D:/temp/");
Search search = new Search(ext);
EnumSet<FileVisitOption> options = EnumSet.of(FileVisitOption.FOLLOW_LINKS);
try {
Files.walkFileTree(fileTree, options, Integer.MAX_VALUE, search);
} catch (IOException e) {
e.printStackTrace();
}
}
}
class Search implements FileVisitor {
private PathMatcher matcher;
public Search(String ext) {
this.matcher = FileSystems.getDefault().getPathMatcher("glob:" + ext);
}
public void judgeFile(Path file) throws IOException {
Path name = file.getFileName();
if (name != null && matcher.matches(name)) {
//
System.out.println(" : " + name);
}
}
//
@Override
public FileVisitResult preVisitDirectory(Object dir, BasicFileAttributes attrs) throws IOException {
return FileVisitResult.CONTINUE;
}
//
@Override
public FileVisitResult visitFile(Object file, BasicFileAttributes attrs) throws IOException {
judgeFile((Path) file);
return FileVisitResult.CONTINUE;
}
//
@Override
public FileVisitResult visitFileFailed(Object file, IOException exc) throws IOException {
return FileVisitResult.CONTINUE;
}
//
@Override
public FileVisitResult postVisitDirectory(Object dir, IOException exc) throws IOException {
System.out.println("postVisit: " + (Path) dir);
return FileVisitResult.CONTINUE;
}
}
실행 결과:일치 하 는 파일 이름:d.jpg
postVisit: D:\temp\test
postVisit: D:\temp
자바 의 IO 패키지
자바 읽 기와 쓰기 파일,데이터 흐름 으로 만 읽 기와 쓰기자바.io 가방 중4.567917.노드 류:파일 을 직접 읽 고 쓴다포장 류:4.567917.1.변환 류:바이트/문자/데이터 형식의 전환 류4.567917.2.장식 류:장식 노드 류노드 클래스
파일 클래스 를 직접 조작 합 니 다InputStream,OutStream(바이트)
4.567917.문자 에서 바이트 사이 의 전환
DataInputStream,DataOutputStream:패 키 징 데이터 흐름BufferedInputStream,BufferOutputStream:캐 시 바이트 흐름BufferedReader,BufferedWriter:캐 시 문자 흐름텍스트 파일 의 읽 기와 쓰기
쓰기 동작
public static void main(String[] args) {
writeFile();
}
public static void writeFile(){
try (BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("D:/temp/demo3.txt")))) {
bw.write("hello world");
bw.newLine();
bw.write("Java Home");
bw.newLine();
} catch (Exception e) {
e.printStackTrace();
}
}
Demo 3.txt 파일 내용hello world
Java Home
읽 기 동작
public static void main(String[] args) {
readerFile();
}
private static void readerFile() {
String line = "";
try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("D:/temp/demo3.txt")))) {
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (Exception e) {
e.printStackTrace();
}
}
실행 결과:hello world
Java Home
바 이 너 리 파일 읽 기 쓰기 자바
public static void main(String[] args) {
writeFile();
}
private static void writeFile() {
try (DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("D:/temp/test.dat")))) {
dos.writeUTF("hello");
dos.writeUTF("hello world is test bytes");
dos.writeInt(20);
dos.writeUTF("world");
} catch (Exception e) {
e.printStackTrace();
}
}
파일 내용hellohello world is test bytes world
읽 기 동작
public static void main(String[] args) {
readFile();
}
private static void readFile() {
try (DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream("D:/temp/test.dat")))) {
System.out.println(in.readUTF() + in.readUTF() + in.readInt() + in.readUTF());
} catch (Exception e) {
e.printStackTrace();
}
}
실행 결과:hellohello world is test bytes20world
ZIP 파일 읽 기와 쓰기
//
public static void main(String[] args) {
zipFile();
}
public static void zipFile() {
File file = new File("D:/temp");
File zipFile = new File("D:/temp.zip");
FileInputStream input = null;
try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFile))) {
//
zos.setComment(new String(" ".getBytes(),"UTF-8"));
//
int temp = 0;
//
if (file.isDirectory()) {
File[] listFile = file.listFiles();
for (int i = 0; i < listFile.length; i++) {
//
input = new FileInputStream(listFile[i]);
// Entry
zos.putNextEntry(new ZipEntry(file.getName() +
File.separator + listFile[i].getName() ));
System.out.println(" : " + listFile[i].getName());
//
while ((temp = input.read()) != -1) {
//
zos.write(temp);
}
//
input.close();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
메모:압축 된 폴 더 에 하위 디 렉 터 리 가 있 으 면 안 됩 니 다.그렇지 않 으 면 FileNotFound Exception:D:\temp\\test(접근 거부)를 보고 합 니 다.이것 은 input=new FileInputStream(listFile[i])때 문 입 니 다.읽 은 파일 형식 은 폴 더 로 인 한 것 입 니 다.여러 파일 압축 풀기
//
public static void main(String[] args) throws Exception{
// zip , zip , Java
File file = new File("C:\\Users\\Wong\\Desktop\\test.zip");
//
File outFile = null;
// ZipEntry
ZipFile zipFile = new ZipFile(file);
//
OutputStream out = null;
// , Entry
InputStream input = null;
// Entry
ZipEntry entry = null;
// , ZipInputStream
try (ZipInputStream zipInput = new ZipInputStream(new FileInputStream(file))) {
//
while ((entry = zipInput.getNextEntry()) != null) {
System.out.println(" " + entry.getName().replaceAll("/", "") + " ");
//
outFile = new File("D:/" + entry.getName());
boolean outputDirectoryNotExsits = !outFile.getParentFile().exists();
//
if (outputDirectoryNotExsits) {
//
outFile.getParentFile().mkdirs();
}
boolean outFileNotExists = !outFile.exists();
//
if (outFileNotExists) {
if (entry.isDirectory()) {
outFile.mkdirs();
} else {
outFile.createNewFile();
}
}
boolean entryNotDirctory = !entry.isDirectory();
if (entryNotDirctory) {
input = zipFile.getInputStream(entry);
out = new FileOutputStream(outFile);
int temp = 0;
while ((temp = input.read()) != -1) {
out.write(temp);
}
input.close();
out.close();
System.out.println(" ");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
자바 파일 의 기본 작업 총화 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 자바 파일 의 기본 작업 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.