이 문서에서는 Java가 예제를 통해 파일 읽기, 쓰기 및 압축을 구현하는 방법을 설명합니다.
패키지 com.toone.iform.action.common; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io .FileOutputStream; import java.io.FileWriter; java.io.IOException; import java.util.Enumeration; import java.util.zip.ZipException; zip.ZipFile; 공용 클래스 TestFileIO { static String s = File.separator; 개인 정적 void testInput() { // D 드라이브 아래에 Welcome.java 파일이 있습니다. 이제 바이트 단위로 읽습니다. // int counter=0; // 입력 스트림 try { f11 = new FileInputStream("D:" + s + "Welcome.java"); while ((a = f11.read()) != -1) System.out.print((char) a); 여기서는 한자가 2바이트이기 때문에 한자는 정상적으로 출력할 수 없습니다. System.out.println("/n/n---------------------------- -----------/n"); FileReader f12 = new FileReader("D:" + s + "Welcome.java"); while ((a = f12.read()) != - 1) System.out.print((char) a);// 문자별 출력은 다음과 같습니다. 한자는 정상적으로 출력 가능합니다. System.out.println("/n/n------------- ----------/n"); f11.close();// f12.close()를 읽은 후 파일을 닫습니다.// 닫습니다. 읽은 후 파일} catch (FileNotFoundException e) { // TODO 자동 생성된 catch 블록 e.printStackTrace() } catch (IOException e) { // TODO 자동 생성됨 catch block e.printStackTrace(); } } private static void testOutput() { // D 드라이브 아래에 Welcome.java 파일이 있습니다. 이제 바이트 단위로 읽습니다. int a = 0 // 출력 스트림 파일 f21 = new File ("D:" + s + "testFile" + s + "test1.txt"); // 새 파일 f21을 정의한 후 이 디렉터리에 존재하는지 확인합니다. if (!f21.exists()) { f21.getParentFile().mkdirs(); try { f21.createNewFile(); // "Welcome.java"의 내용을 f21에 복사합니다. FileOutputStream fos = new FileOutputStream(f21); FileInputStream fis = new FileInputStream("D:" + s + "Welcome.java");// "Welcome.java" 파일을 읽으면서 ((a = fis.read()) != -1) fos.write(a);// 읽기 메모리를 fos에 쓰고 이제 test1.txt는 / / Welcome.java의 FileWriter 클래스 f22 = new FileWriter("D:" + s + "testFile" + s + "test2.txt") for (int i = 0; i < 65535; i++) f22.write(i);//test2.txt에 씁니다. 여기서도 파일 존재 여부를 확인하기 위한 위의 35~38번째 줄의 명령문을 생략할 수 있음을 알 수 있습니다. // 파일에 문자열 쓰기 FileWriter f23 = new FileWriter("D:" + s + "testFile" + s + "test3.txt") f23.write("Hello, world!"); ); f22.close(); f23.close() } catch (IOException e) { // TODO 자동 생성된 블록 e.printStackTrace(); } } } private static void testBufferring() { // D 드라이브 아래에 Welcome.java 파일이 있습니다. 이제 바이트 단위로 읽습니다. int a = 0, counter = 0 // 버퍼 문자 , 구현 효율적인 쓰기 // BufferedWriter f31=new BufferedWriter(newFileWriter("D"+s+"testFile"+s+"test4.txt")); BufferedWriter f31; try { f31 = new BufferedWriter(new FileWriter("D:" + s + "testFile" + s + "test4.txt")) for (int i = 1; i <= 100; i++) { f31 .write(String.valueOf(new Random().nextInt(100)) + " ") if (i % 10 == 0) f31.newLine() } f31.flush();// 버퍼 새로 고침 f31.close() f32 = new BufferedReader(new FileReader("D:" + s + "testFile" + s + "test4.txt")); String s32; System.out.println("출력 파일 f32의 내용:"); while ((s32 = f32.readLine()) != null) System.out.println(s32); f32.close(); System.out.println("/n--------- --------------------------/n"); } catch (IOException e) { // TODO 자동 생성된 catch 블록 e.printStackTrace() } } private static void testZip() { try { File f1 = new File("D:/test.zip"); File f2 = new File("D:/testFile/testzip") zf = new ZipFile(f1); catch(IOException e) { // TODO 자동 생성된 catch 블록 e.printStackTrace() } } // 압축된 패키지 zipfile을 파일로 추출합니다. public static void; testZipToUnzip(ZipFile zipfile, File file) { ZipEntry zentry = null; File zipout; InputStream zis = null; FileOutputStream fos = null; Enumeration e = zipfile.entries();// zipfile의 디렉토리(e.hasMoreElements() ) { zentry = (ZipEntry) e.nextElement(); System.out.println(zentry.getName());//zipfile 아래에는 어떤 파일이 있나요? 그런데 왜 순서대로 출력이 안되나요? ? //압축해제된 파일을 파일 폴더에 넣습니다: zipout = new File(file + s + zentry.getName()); if (!zentry.isDirectory()) { try { zis = zipfile.getInputStream(zentry) ; !zipout.exists()) zipout.getParentFile().mkdirs(); fos = new FileOutputStream(zipout); 바이트[1024]; int 길이; while ((length = zis.read(b)) > 0) { fos.write(b, 0, length) } fos.close(); (ZipException e1) { // TODO 자동 생성된 catch 블록 e1.printStackTrace() } catch (IOException e1) { // TODO 자동 생성된 catch 블록 e1.printStackTrace(); } } } public static void main(String[] args) throws ZipException { // TODO 자동 생성 메서드 testInput() testBufferring();