IO流输入和输出(上)

输入和输出处理

什么是计算机文件

文件是一个广泛的概念。这里我们要提到的是计算机中的文件,计算机中的文件就是相关记录或放在一起的数据的集合。有了它我们就可以将数据持续化存储(“长期存储”)在磁盘、光盘内。

File类

构造方法
  1. File(String pathname) 直接根据字符串类型地址获取对应的文件对象
// 1.File(String pathname)
// File file = new File("d:/a.txt");
// File file = new File("d:\\a.txt");
  1. File(String parent,String child) 根据字符串类型的父路径和子路径获取对应的文件对象
// 2.File(String parent父路径,String child子路径)
// 通常应用于:你已经获取到了某个文件的父路径  然后只需要通过本构造即可实现路径自动拼接
// File file = new File("d:", "a.txt");
  1. File(File parent,String child) 根据文件类型的父路径和字符串类型的子路径获取对应的文件对象
// 3.File(File parent,String child)
// 通常应用于:你已经获取到了某个文件的父路径(File对象型的)....
File parent = new File("d:");
File file = new File(parent , "a.txt");
// 获取文件的字节数
System.out.println(file.length());
普通方法
  1. 获取文件的字节数:long length()
	File file = new File("e://b.txt");
		System.out.println(file.length());
		// 输出结果:18(字节)
  1. 判断文件/文件夹是否存在:boolean exists();
File file = new File("e://b.txt");
		System.out.println(file.exists());
		// 输出结果:true
  1. 判断是否是文件:boolean isFile();
File file = new File("e://b.txt");
		System.out.println(file.isFile());
		// 输出结果:ture
  1. 判断是否是文件夹:boolean isDirectory();
File file = new File("e://b.txt");
		System.out.println(file.isDirectory);
		// 输出结果false
  1. 获取相对路径:String getPath(); // 你可以理解为 File构造传入什么路径 就得到什么路径
File file = new File("e:\Java\b.txt");
		System.out.println(file.getPath());
		// 输出结果:e:\b.txt
  1. 获取绝对路径:String getAbsolutepath(); // 如果File构造传入的是相对路径 则可以根据它找到对应的绝对路径,但是如果本身就是绝对路径 则直接显示。
File file = new File("e://b.txt");
		System.out.println(file.getAbsolutePath());
		// 输出结果:e:\Java\b.txt
  1. 创建文件:boolean createNewFile();
File file = new File("e:/kY.txt");
		try {
			if(file == null) {
				file.createNewFile();
				System.out.println("创建成功");
			}else {
				System.out.println("创建失败");
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			// 输出结果:创建成功
  1. 创建文件夹:boolean mkdir();
File file = new File("e:/kY");
		if(file == null) {
			file.mkdir();
			System.out.println("创建成功");
		}else {
			System.out.println("创建失败");
		}
		// 输出结果:创建成功
  1. 删除文件/空文件夹:boolean delete();
     File file = new File("e:/kY.txt");
    		if(file != null) {
    			file.delete();
    			System.out.println("删除成功");
    		}else {
    			System.out.println("删除失败");
    			// 删除成功
  1. 获取文件名称:String getName();
File file = new File("e:/kY.txt");
		String f = file.getName();
		System.out.println(f);
		// 输出结果:kY.txt
  1. 获取文件夹的子目录:File[] listFiles();
File file = new File("e:");
		File[] one = file.listFiles();
		for (File file2 : one) {
			System.out.println(file2);
			//输出结果:e:\$RECYCLE.BIN
								e:\a.txt
								e:\Java
								e:\System Volume Information
								e:\tY.txt

流的分类

按照方向性分类:

输入流:(读) InputStream Reader
输出流:(写) OutPutStream Writer

按照处理单元
字节流:可以传输一切内容,包括音频、视频、图片、文本…

字节输入流
InputStream

字节输出流
OutputStream
字符流可传输文本内容 根据国家的不同进行相应的文字转换

字符输入流
Reader
字符输出流
Writer

基类是抽象类无法直接创建对象,所以需要找到对应的子类。
FileInputStream
FileOutPutStream

使用字节流实现文件复制

字节输入流FileInputStream

构造方法

FileInputStream(File file);

FileInputStream(String pathname);

常用方法:

  1. 读取一个字节数据:int read();
  2. 读取一个字节数组长度的字节数据 返回实际读取到的字节数量:int read(byte[] b);
  3. 读取输入流中从指定索引开始,指定长度的字节数据到字节数组中:int read(byte b,int offs,int len);
  4. 关流:void colse();
字节输出流FileOutputStream

构造方法

FileOutputStream(File file);

FileOutputStream(String path);

FileOutputStream(File/String file,boolean append); 如果为true表示可以追加数据 而不是覆盖数据

常用方法:

  1. void write(int b); 输出一个字节
  2. void write(byte[] b); 输出一个字节数组的内容
  3. void write(byte[] b,int offs,int len); 输出一个字节数组中的指定范围的内容
  4. void close(); 关流
文件的复制
public class Test {

	public static void main(String[] args) throws IOException {
		FileInputStream fis = null;
		FileOutputStream fos = null;
		
		try {
			fis = new FileInputStream("e:/kY.txt");
			fos = new FileOutputStream("d:/kY.txt");
			
			// 读取数据
			byte[] b = new byte[1024];
			int len = 0;
			while((len = fis.read(b)) != -1) {
				// 写入数据,读取到多少写多少
				fos.write(b, 0, len);
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
			// 关流
		}finally {
			
			if(fos != null) {
				fos.close();
			}
			if(fis != null) {
				fis.close();
			}
		}
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值