I/O基础(笔记)

I–input输入/读
O–output输出/写

java.io.File类----操作文件
File file=new File(String pathName);
参数的两种格式:1.C:\\test.txt 2.C:/test.txt

File类常用方法:
boolean exists() 判断文件或目录是否存在
boolean isFile() 判断是否是文件
boolean isDirectory() 判断是否是目录
String getPath() 返回相对路径
String getAbsolutePath() 返回绝对路径
String getName() 返回此对象表示的文件或目录的名称
boolean delete() 删除文件或目录
boolean createNewFile() 创建文件
long length() 返回文件的长度,单位为字节,不存在则返回0L

I/O流分类:

io流

InputStream抽象类常用方法:
int read() 一个字节一个字节的读,返回该字节整数表示形式
int read(byte[] b) 读取若干字节保存到数组b,返回读取到的字节数,末尾返回-1
int read(byte[] b,int off,int len) off指数组b中开始读取数据的下标,len指从下标开 始计算,共读取的字节数目,返回读取到的字节数,末尾返回-1
int available() 返回可读取的字节数
void close() 关闭流

FileInputStream(InputStream子类)常用构造方法:
FileInputStream(File file) 参数为文件
FileInputStream(String pathName) 参数为路径

OutputStream抽象类常用方法:
void write(int b) 将指定字节写入此文件输出流
void write(byte[] b) 将b.length个字节从指定 byte 数组写入此文件输出流中
void write(byte[] b,int off,int len) 写入byte数组中从偏移量off开始的len个字节
void close() 关闭流
void flush() 强制清空缓冲区

FileOutputStream(OutputStream子类)常用构造方法:
FileOutputStream(File file) 参数为文件
FileOutputStream(String pathName) 参数为路径
FileOutputStream(String pathName,boolean append) append为true为追加写入,false会覆盖文件原有数据写入

Reader抽象类常用方法:
int read() 读取单个字符
int read(byte[] b) 将字符读入数组
int read(byte[] b,int off,int len) 将字符读入数组的某一部分
void close() 关闭流

InputStreamReader(Reader直接子类)常用构造方法:
InputStreamReader(InputStream) 创建一个使用默认字符集的 InputStreamReader
InputStreamReader(InputStream,String charsetName) 创建使用给定编码格式的InputStreamReader,用来解决中文乱码问题

FileReader(Reader间接子类)常用构造方法:
FileReader(File file) 参数为文件
FileReader(String pathName) 参数为路径

Writer抽象类常用方法:
void write(String) 写入字符串
void write(String str, int off, int len) 写入字符串的某一部分
void write(char[] ch) 写入字符数组
void write(char[] ch, int off, int len) 写入字符数组的某一部分
void close() 关闭流
void flush() 强制清空缓冲区

OutputStreamWriter(Writer直接子类)常用构造方法:
OutputStreamWriter(OutputStream) 创建一个使用默认字符集的 OutputStreamWriter
OutputStreamWriter(OutputStream,String charsetName) 创建使用给定编码格式的OutputStreamWriter,用来解决中文乱码问题

FileWriter(Writer间接子类)常用构造方法:
FileWriter(File file) 参数为文件
FileWriter(String pathName) 参数为路径
FileWriter(String pathName,boolean append) append为true为追加写入,false会覆盖文件原有数据写入

简单代码示例:

package FileInputStream_Test;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class FileInputStream_Test {
	/**
	 * 创建文件
	 * 
	 * @param file
	 */
	public void newFile(File file) {
		if (!file.exists()) {
			try {
				file.createNewFile();
				System.out.println("文件已创建!");
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	/**
	 * 删除文件
	 * 
	 * @param file
	 */
	public void fileDel(File file) {
		if (file.exists()) {
			file.delete();
			System.out.println("文件已删除!");
		}
	}

	/**
	 * 文件信息
	 * 
	 * @param file
	 */
	public void showInfo(File file) {
		if (file.exists()) {
			System.out.println(file.getPath());
			System.out.println(file.getAbsolutePath());
			System.out.println(file.length());
		} else {
			System.out.println("文件不存在!");
		}

	}

	/**
	 * 字节流写入数据
	 * @param args
	 */
	public static void main(String[] args) {
		Test test = new Test();
		File file = new File("d:\\dxx\\ban.txt");
		test.newFile(file);
		OutputStream os = null;
		try {
			os = new FileOutputStream("d:\\dxx\\ban.txt");
			String s = "Ban WeiLi";
			byte b[] = s.getBytes();
			os.write(b, 0, b.length);
			System.out.println("更新!");
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				os.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

	}
}

	/**
	 * 字节流读取数据
	 * @param args
	 */
	public static void main(String[] args) {
		FileInputStream fis = null;
		try {
			fis = new FileInputStream(file);
			System.out.println(fis.available());
			int data;
			while ((data = fis.read()) != -1) {
				System.out.print((char) data);
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				fis.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

	}

}
public class Test {
	/**
	 * 使用字符流
	 * 读取ban.txt中的数据并写入test.txt
	 * @param args
	 */
	public static void main(String[] args) {
		Reader read=null;
		Writer write=null;
		try {
			read=new FileReader("d:\\dxx\\ban.txt");
			write=new FileWriter("d:\\dxx\\test.txt");
			char[]ch=new char[100];
			int data;
			while((data=read.read(ch))!=-1){
				write.write(ch, 0, data);
				System.out.println("成功!");
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			try {
				write.close();
				read.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		
		
		
	}

}

BufferReader,BufferWriter 缓冲流:

public void test04() {

		FileReader fr = null;
		FileWriter fw = null;
		BufferedReader bfr = null;
		BufferedWriter bfw = null;
		try {
			fr = new FileReader("I:\\wenjian.pdf");
			fw = new FileWriter("I:\\wenjian.pdf");
			bfr = new BufferedReader(fr);
			bfw = new BufferedWriter(fw);

			char[] c = new char[1024];
			int len = 0;
			while ((len = bfr.read(c)) != -1) {
				bfw.write(c, 0, len);
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (bfw != null) {
				try {
					bfw.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			if (bfr != null) {
				try {
					bfr.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			if (fw != null) {
				try {
					fw.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			if (fr != null) {
				try {
					fr.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}

		}

	}

DataInputStream,DataOutputStream(读写二进制文件 如:音视频):

package com.bdqn.test;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class Test_mp3 {
	public static void main(String[] args) {
		OutputStream os = null;
		InputStream is = null;
		DataInputStream dis = null;
		DataOutputStream dos = null;
		try {
			is = new FileInputStream("d:\\dxx\\Cool.aac");
			os = new FileOutputStream("d:\\dxx\\copyCool.aac");
			dis = new DataInputStream(is);
			dos = new DataOutputStream(os);
			int data = 0;
			while ((data = dis.read()) != -1) {
				dos.write(data);
			}
			dos.flush();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				if (dis != null)
					dis.close();
				if (dos != null)
					dos.close();
				if (os != null)
					os.close();
				if (is != null)
					is.close();

			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值