Java编程的IO操作
一、IO类分类
二、字符流和字节流分类
三、重要类的使用方法
3.1 字节输入流FileInputStream
package com.ietree.io; import java.io.FileInputStream; public class IODemos { public static void main(String[] args) throws Exception { FileInputStream fis = new FileInputStream("D:\\test.txt"); // 方法一:读取单个字节,每次调用将后移一位,返回读取到的字节,如果读到文件末尾返回-1; // 缺点是每读一次循环一次,效率比较低 int data; while((data = fis.read()) != -1) { System.out.println((char)data); } fis.close(); } }
package com.ietree.io; import java.io.FileInputStream; public class IODemos { public static void main(String[] args) throws Exception { FileInputStream fis = new FileInputStream("D:\\test.txt"); // 方法二:批量读取多个字节到字节数组,返回读取到的字节个数,如果读到文件末尾,返回-1 byte[] buf = new byte[5]; int len; while((len = fis.read(buf)) != -1) { System.out.print(new String(buf, 0, len)); } fis.close(); } }
3.2 字节输出流FileOutputStream
package com.ietree.io; import java.io.FileOutputStream; import java.io.IOException; public class TestFileOutputStream { public static void main(String[] args) throws IOException { FileOutputStream fos = new FileOutputStream("src\\test.txt"); // 写入单个字节 fos.write('a'); // 批量写入整个字节数组 byte[] buf = "abcde".getBytes(); fos.write(buf); // 批量写入字节数组指定部分 fos.write("abcde".getBytes(), 1, 3); fos.close(); } }
3.3 FileInputStream和FileOutputStream边读边写操作
package com.ietree.io; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class TestFisFos { public static void main(String[] args) { FileInputStream fis = null; FileOutputStream fos = null; try { fis = new FileInputStream("D:\\11.png"); fos = new FileOutputStream("src\\22.png"); byte[] buf = new byte[1024]; int len; while ((len = fis.read(buf)) != -1) { fos.write(buf, 0, len); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } System.out.println("复制完毕"); try { if (fis != null) fis.close(); if (fis != null) fos.close(); } catch (IOException e) { e.printStackTrace(); } } }
3.4 字符输出流FileReader
package com.ietree.io; import java.io.FileReader; import java.io.IOException; public class TestFileReader { public static void main(String[] args) throws IOException { FileReader reader = new FileReader("C:\\drivedbg.txt"); // 方式一:int read读取单个字符 int data; while ((data = reader.read()) != -1) { System.out.print((char) data); } // 方式二:批量读取到字符数组char[] char[] chs = new char[1024]; int len; while ((len = reader.read(chs)) != -1) { System.out.print(new String(chs, 0, len)); } reader.close(); } }
3.5 字符写入流FileWriter
package com.ietree.io; import java.io.FileWriter; import java.io.IOException; public class TestFileWriter { public static void main(String[] args) throws IOException { FileWriter writer = new FileWriter("src\\test.txt"); writer.write("Hello world by FileWriter!"); writer.close(); System.out.println("文件写入成功!"); } }
3.6 FileReader和FileWriter边读边写操作
package com.ietree.io; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class TestFrFw { public static void main(String[] args) { FileReader reader = null; FileWriter writer = null; try { reader = new FileReader("C:\\\\drivedbg.txt"); writer = new FileWriter("src\\text.txt"); int len; char[] chs = new char[1024]; while ((len = reader.read(chs)) != -1) { writer.write(chs, 0, len); } if (reader != null) reader.close(); if (writer != null) writer.close(); System.out.println("文件复制完毕!"); } catch (IOException e) { e.printStackTrace(); } } }
3.7 缓存字节流BufferedInputStream和BufferedOutputStream边读边写操作
package com.ietree.io; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class TestBOSBIS { public static void main(String[] args) throws IOException { BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\11.png")); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("src\\22.png")); byte[] chs = new byte[1024]; int len; while((len = bis.read(chs)) != -1) { bos.write(chs, 0, len); } bis.close(); bos.close(); System.out.println("文件复制完毕!"); } }
3.8 缓存字符流BufferedReader
package com.ietree.io; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class TestBufferedReader { public static void main(String[] args) { BufferedReader br = null; try { br = new BufferedReader(new FileReader("C:\\drivedbg.txt")); String str; while((str = br.readLine()) != null) { System.out.println(str); } } catch (IOException e) { e.printStackTrace(); } finally { try { if(br != null) br.close(); } catch (IOException e) { e.printStackTrace(); } } } }
3.9 缓存字符流BufferedReader和BufferedWriter边读边写操作
package com.ietree.io; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class TestBufferedWriter { public static void main(String[] args) { BufferedWriter bw = null; BufferedReader br = null; try { br = new BufferedReader(new FileReader("C:\\drivedbg.txt")); bw = new BufferedWriter(new FileWriter("src\\test.txt")); String line; while((line = br.readLine()) != null) { bw.write(line); bw.newLine(); } } catch (IOException e) { e.printStackTrace(); } finally { try { if(br != null) br.close(); if(bw != null) bw.close(); } catch (IOException e) { e.printStackTrace(); } } System.out.println("文件复制完毕!"); } }
如果文章对你有所帮助的话,请点个推荐或者关注吧。也希望你能够养成分享的习惯,从而去帮助其他人。