Java笔记——File类功能(字节流)

File类功能

创建文件 createNewFile()
  • 结合try…catch
try {
		    //File f = new File("/home/skywang/dir/file3.txt");   //linux创建文件
		    File f = new File("D:/学习/专业/Java/java_text.txt");   
		    f.createNewFile();
		} catch (IOException e) {
		    e.printStackTrace();
		}
  • 也可以在类中抛出异常
创建目录/多目录 mkdir()/mkdirs()

IO概述

IO流分类:

  • 硬盘读入内存 输入input -read
  • 内存写入硬盘 输出output -write

字节流

记事本读不懂的为字节流

输出字节
  1. 创建字节输出流对象
  • 第一种
	File f= new File("D:/学习/专业/Java/java_text.txt");
	FileOutputStream fs=new FileOutputStream(f);
  • 第二种
FileOutputStream fs=new FileOutputStream("D:/学习/专业/Java/java_text.txt");

调用方法

`

	 //write(int b);
	 fs.write(55);

		
	//write(byte[] b);
	byte[] by= {97,98,99,100,101};
	byte[] by= "adagae".getBytes();  //根据字符串得到字符数组
	fs.write(by);
	
	//write(byte[] b,int off, int len); 目标字节,偏移量,字节数
	byte[] by= "adagae".getBytes();
	fs.write(by,1,3); //从某个索引开始录入
	

3.关闭

fs.close();
  1. 两个小问题
  • 换行
fs.write("hello".getBytes());
fs.write("\r\n".getBytes()); //Windows识别的是\r\n;不同系统不一样
  • 追加写入
FileOutputStream fs=new FileOutputStream(f,true);
  1. 异常处理
FileOutputStream fs=null;
	try{
		fs=new FileOutputStream("D:/");
		fs.write(57);
	}catch(IOException e){
		e.printStackTrace();
	}finally{
		if(fs!=null){
		try{
			fs.close();
		}catch(IOException e){
		e.printStackTrace();
		}
		}
	}
读取字节
  • 一次读取一个字节
int by=fs.read();
		while(by!=-1) {
		System.out.println((char)by);
		by=fs.read();
		}
  • 一次读取一个字节数组数据
	方法一
	byte[] bys=new byte[100];  //读取的字节数;如果是5个字节,那么读取的只有5个字节长度,需要重复读取
	int len=fis.read(bys);
	System.out.println(new String(bys));
	
	方法二
	byte[] bys=new byte[1024];
	int len;
	while((len=fis.read(bys))!=-1) {
	System.out.print(new String(bys,0,len));
	}
复制文本文件
	File fi= new File("D:/学习/专业/Java/java_text.txt");
	File fo= new File("D:/学习/专业/Java/java_text1.txt");
	FileInputStream fis=new FileInputStream(fi);
	FileOutputStream fos=new FileOutputStream(fo);
		int by;
		while((by=fis.read())!=-1) {
		fos.write(by);;
		}
		
		fis.close();
		fos.close();
复制图片
File fi= new File("D:/学习/专业/Java/J1.jpg");
		File fo= new File("D:/学习/专业/Java/J2.jpg");
		FileInputStream fis=new FileInputStream(fi);
		FileOutputStream fos=new FileOutputStream(fo);
		byte[] bys=new byte[1024];
		int len;
		while((len=fis.read(bys))!=-1) {
		fos.write(bys,0,len);
		}	
		fis.close();
		fos.close();	

字节缓冲流

-和上面相比,此函数不用一直调用底层;提高读写数据的效率
构造方法:

  • 字节缓冲输出流 BufferedOutputStream(OutputStream out)
  • 字节缓冲输出流 BufferedInputStream(InputStream in)
    字节缓冲流依靠的输出输入流方法函数和字节流操作一样的
		File fo= new File("D:/学习/专业/Java/java_text1.txt");
		FileOutputStream fos=new FileOutputStream(fo);
		
		BufferedOutputStream out=new BufferedOutputStream(fos,"UTF-8");
		String s="中国";
		out.write(s);
		out.close();
字节复制视频

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值