IO流-1(字节输入输出流)

文档操作

操作文档需要先创建File对象,创建时传入文件路径,再通过File类的方法对文档进行增删改查的操作

//创建对象
File file=new File(pathname);//传入文件路径,可以是已有的,也可以是未创建的;
//判断类型方法
file.isDirectory();//判断指定路径的是不是文件夹,是返回true;
file.isFile();//判断指定路径的是不是文件,是返回true;
file.exists();//判断指定路径的文件(夹)是否已存在,已存在返回true;
//创建
file.mkdir();//根据指定的路径创建文件夹,只能在已有的基础上向下创建一级;
file.mkdirs();//根据指定的路径创建文件夹,可以一次性创建多级文件夹
//注意mkdirs方法,如果左后一级是文件名,也会被当作是文件夹名创建
file.createNewFile();//在指定的路径下创建一个文件,会抛出IOException
//获取相关信息
file.getName();//获取最后一级文件名
file.getParentFile();//获取父级文件路径的对象;
file.length();//返回文件的长度;
file.getPath();//获取相对路径(不在默认根目录下会返回绝对路径);
file.getAbsolutePath();//返回绝对路径
//删除文件
file.delete();
//修改文件名
file.renameTo();//传入新的文件及路径名(在同一位置)

字节输入流

普通的字节输入流使用的是FileInputStream,读取文件过程如下:

//使用try-catch捕获异常
FileInputStream fis=null;
try{
	//这里抛出的FileNotFoundException是IOException的子类,就一并捕获了
	fis=new FileInputStream(pathName);
	int temp;
	/*这是第一种读取方式,需要注意的是,fis没有判断是否还有未读的方法,
	每读取一次,返回字节,并将指针后移一位,因此没循环一次只能调用一次
	read方法,否则会出现数据丢失的情况;
	注意以下写法一次只能读取一个字节,若要读取的文件有中文(占2个或3个
	字节,视编码字符集而定)时,不能正常的将中文打印出来,需要将字节保
	存到数组中,再统一打印*/
	while((temp=fis.read())!=-1){
		System.out.println((char)temp);
	}
}catch(IOException e){
	e.printStackTrace();
}finally{
	try{
		fis.close();//输入流用完后,要及时关闭,避免浪费资源
	}catch(IOException e){//关闭流的操作也会抛出IOException
		e.printStackTrace();
	}
}

//单独写下第二种读取方式
int len;//记录每次读取有效字节数;
//这里数组长度可以自己定,大小没有关系,一般会写大一点,如1024
byte[] bytes=new byte[3];
while((len=fis.read(bytes))!=-1){
	/*现在一次读取会读取3个,直至剩余内容不够3个字节,每次返回的int数字是
	每次读取的有效字节数,读取不到时返回-1
	这种读取方式比第一种单独读一个字节的要高*/
}

字节输出流

普通的字节输出流使用的是FileOutputStream,写入文件过程如下:

String str="HelloWorld!"//目标是将这段文字写到指定的文件中
FileOutputStream fos=null;
tyr{
	//这里一样会抛出FileNotFoundException
	//可以在路径名后面追加一个boolean参数,true表示在原文件中追加写入
	fos=new FileOutputStream(pathName);
	//可以一次写一个字节数组,也可以配合输入流每读取一个字节写入一个字节
	fos.write(str.getBytes());
}catch(IOException e){
	e.printStackTrace();
}finally{
	try{
		fos.close();//输出流用完后,要及时关闭
	}catch(IOException e){
		e.printStackTrace();
	}
}

字节输入流和输出流配合就能达成复制文件的效果,配合delete方法删除文件能达成移动文件的效果。由于所有文件都是使用二进制字节存储的,所以复制和移动的文件没有类型限制,文本文档、音频、图片和视频都可以

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值