今天在此做一个总结,关于文件的读写操作:
package com.phj.file.read; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.io.Reader; import java.io.StringReader; import java.util.Scanner; public class ObjectFileReadAndWrite { /** * @author feihong * @throws Exception */ public static void main(String[] args) throws Exception { String path = "D:/TestFile/MathUtil.java"; // ReadByByte(path); // ReadByBytes(path); // ReadByChars(path); // ReadByLine(path); File file = new File(path) ; readFromFile(file); // writeFile(); // writeFileToMemory(path); // writeFile2(path); writeFile3(); // File file = new File("D:" + File.separator + "test"); // printFile(file); // deleFile(file); double num = 12.213213; System.out.printf("%f", num); System.out.println("操作成功!"); } public static void ReadByByte(String filePath) throws Exception { File file = new File(filePath); InputStream is = new FileInputStream(file); int temp; while ((temp = is.read()) != -1) { System.out.write(temp); } File file1 = new File("D:/test.txt"); OutputStream os = new FileOutputStream(file1); os.write(is.read()); is.close(); os.close(); } public static void ReadByBytes(String filePath) throws Exception { File file = new File(filePath); InputStream is = new FileInputStream(file); byte[] temp = new byte[1024]; int flag = 0; is.available(); while ((flag = is.read(temp)) != -1) { System.out.write(temp, 0, flag); } is.close(); } public static void ReadByChar(String filePath) throws Exception { File file = new File(filePath); Reader reader = new FileReader(file); int temp = 0; while ((temp = reader.read()) != -1) { if ((char) temp != '\r') { System.out.print((char) temp); } } reader.close(); } public static void ReadByChars(String filePath) throws Exception { File file = new File(filePath); Reader reader = new FileReader(file); char[] temp = new char[1024]; int length = reader.read(temp); String str = new String(temp, 0, length); System.out.println(str); reader.close(); } public static void ReadByLine(String filePath) throws Exception { File file = new File(filePath); BufferedReader br = new BufferedReader(new FileReader(file)); String str = null; while ((str = br.readLine()) != null) { System.out.println(str); } } public static void readFromFile(File file) throws Exception{ Scanner scan = new Scanner(file) ; StringBuffer sb = new StringBuffer(); while(scan.hasNext()){ sb.append(scan.next()).append("\n"); } System.out.println(sb); } // 输入即返回 public static void writeFile() throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Enter a line: "); boolean flag = true; while (flag) { System.out.println(br.readLine().concat("=====")); flag = true; } br.close(); } public static void writeFileToMemory(String filePath) throws Exception { BufferedReader br = new BufferedReader(new FileReader(filePath)); String temp, file = null; while ((temp = br.readLine()) != null) { file += temp + '\n'; } br.close(); StringReader sr = new StringReader(file); int csr = 0; while ((csr = sr.read()) != -1) { System.out.print((char) csr); } sr.close(); } // 文件写入 public static void writeFile2(String filePath) throws Exception { BufferedReader br = new BufferedReader(new FileReader(filePath)); String temp, file = null; while ((temp = br.readLine()) != null) { file += temp + '\n'; } br.close(); BufferedReader brWrite = new BufferedReader(new StringReader(file)); PrintWriter pwOut = new PrintWriter(new BufferedWriter(new FileWriter( "D:/IODemo.txt"))); int lintCount = 1; String s = ""; try { while ((s = brWrite.readLine()) != null) { pwOut.println(lintCount + "--->" + s); lintCount++; } } catch (IOException e) { e.printStackTrace(); } pwOut.close(); } public static void writeFile3() throws Exception { //这个操作就相当于是复制一份文件到另一个文件中 File file = new File("D:/TestFile/MathUtil.java"); FileOutputStream fos = null; FileInputStream fis = null; File wFile = new File("D:" + File.separator + "TestFile" + File.separator + "Hello.txt") ; try { fos = new FileOutputStream(wFile); fis = new FileInputStream(file); int temp = 0; while((temp = fis.read()) != -1){ fos.write(temp); } fos.close(); fis.close(); } catch (IOException e) { e.printStackTrace(); } } public static void printFile(File file) { //写出全部文件 if (file != null) { if (file.isDirectory()) { File[] f = file.listFiles(); if (f != null) { for (int i = 0; i < f.length; i++) { printFile(f[i]); } } } else { System.out.println(file); } } } public static void deleFile(File file) { //删除相应文件夹以及相应全部文件 if (file != null) { if (file.isDirectory()) { File[] f = file.listFiles(); for (int i = 0; i < f.length; i++) { deleFile(f[i]); } file.delete(); } else { file.delete(); } } } }