JavaI/O(输入/输出)

File类

通过File类可以在程序中操作文件和目录,File能新建、删除、重命名文件和目录,但是不能访问文件内容本身。

理解I/O流

  1. 流(stream)是从起源(source)到接收(sink)的有序数据。
  2. Java的I/O流使用了装饰器模式,将I/O流分成底层节点流和上层处理流。
  3. Java的I/O提供四个抽象基类不能创建实例
    • 八位字节流以InputStream和OutputStream为基类
    • 十六位的字符流以Reader和Writer为基类
  4. 方法
    • 输入流
      • int read()
      • int read(byte[] b)
    • 输出流
      • void write(int c)
      • void write(String s)
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class FiieTest {
	public void readFile()throws IOException {
		//创建字节输入流
		FileInputStream fis = new FileInputStream("FileTest.java");
		//创建取文件的容器
		byte[] bbuf = new byte[1024];
		//保存实际读取的字节数
		int hasRead = 0;
		//在容器中循环取字节
		while ((hasRead = fis.read(bbuf)) > 0) {
			//将字节数组转换成字符串
			System.out.println(new String(bbuf, 0, hasRead));
		}
		//关闭文件流,放在finally块里更安全
		fis.close();
	}
	
	public void writeFile()throws IOException {
		//java7使用try语句保证输入流自动关闭
		try (
			FileInputStream fis = new FileInputStream("FileTest.java");
			FileOutputStream fos = new FileOutputStream("FileTest.txt"))
		{
			byte[] bbuf = new byte[32];
			int hasRead = 0;
			while ((hasRead = fis.read(bbuf)) > 0) {
				fos.write(bbuf, 0, hasRead);
				
			}
		}catch (IOException e) {
			e.printStackTrace();
		}
		
	}
}

处理流

使用处理流操作更简单,执行效率更高

	//使用PrintStream处理流包装OutputStream
	public void printTest() throws IOException{
		try (
			FileOutputStream fos = new FileOutputStream("test.txt");
			PrintStream ps = new PrintStream(fos)){
			
			ps.println("p普通字符串");
			ps.println(new FileTest());
			
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
原文地址:https://www.cnblogs.com/pycrab/p/8877182.html