2020-09-22课堂笔记

主知识点

1.File类

File file=new File("d:\\Picture/a.jpg");
if(!file.exists())
{
     file.createNewFile();
}

包含盘符的路径名,需要:和\(绝对路径时避免识别成反义字符)

方法返回值意义
exists()boolean存在返回true
canRead()boolean可读返回true
canWrite()boolean可写返回true
canExecute()boolean可执行返回true
getName()String返回文件名称

2.关于什么是流

站在程序的角度
输入流的指向称为源,程序从指向源的输入流中读取源中的数据。当程序需要读取数据时,就会开启一个通向数据源的流,这个数据源可以是文件、内存或者网络连接。

输出流的指向称为目的地,程序通过向输出流中写入数据把信息传递到目的地

即:(程序)从输入流中读,向输出流中写

字节流(ASCII)处理二进制文件,字符流(Unicode)处理文本文件

3.InputStream、OutputStream(字节流)

所有InputStream和OutputStream的子类都是字节流
包括:FileInputStream、BufferedInputStream、
FileOutputStream、BufferedOutputStream

4.Reader、Writer(字符流)

字符流不能用于处理图片、视频、音频
FileReader、FileWriter
BufferedReader、BufferedWriter
示例:

//向文件中写入内容
File file=new File("XXX.txt");
if(!file.exists())
{
    file.createNewFile();
}
FileWriter fw=new FileWriter(file);
BufferedWriter bw=new BufferedWriter(fw);
bw.write("XXXXXXXX");
bw.nextLine();
bw.close();
fw.close();
//从文件中读出每一行,并打印在控制台上
File file=new File("XXX.txt");
FileReader fr=new FileReader(file);
BufferedReader bufr=new BufferedReader(fr);
String s=null;
while((s=bufr.readLine())!=null)
{
  System.out.println(s);  
}
bufr.close();
fr.close();

5.重要提醒

1.记得释放资源,先关(close)内层,再关外层
2.带缓冲的流,只有关闭后,才能写入成功!如不想关闭可以使用flush()方法,冲入也行,

6.File类

1.java.io.file包下的流类
2.file类不能读写文件 可以操作文件属性,增删文件,
3.查询是否可写,可读,可执行
4.不能操作系统文件

案例一

1.分两次录入静夜思,第一次录入《静夜思》 回车 四个空格 作者:李白,第二次录入的时候直接输入所有的诗句。然后使用字符流把他写入到D:/唐诗.txt当中,最后读取出来打印在控制台
字符流

public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
      File file=new File("d:/唐诗.txt");
      if(!file.exists())
      {
    	  file.createNewFile();
      }
       FileWriter fW=new FileWriter(file);
       fW.write("静夜思\n");
       fW.write("作者:李白\n");
       fW.close();
       FileWriter fW2=new FileWriter(file,true);
       fW2.write("窗前明月光,\n");
       fW2.write("疑是地上霜。\n");
       fW2.write("举头望明月,\n");
       fW2.write("低头思故乡。\n");
       fW2.close();
       InputStreamReader isr=new InputStreamReader(new FileInputStream(file),"gbk");
		BufferedReader br=new BufferedReader(isr);
		String lineTxt=null;
		String  lineTxt2=null;
		while((lineTxt=br.readLine())!=null) {
			System.out.println(lineTxt);
			lineTxt2=br.readLine();
			System.out.println(lineTxt2);
			}
		br.close();
		isr.close();
		}
//1.第一次录入 
			// 分析:字符流
		   Writer writer=new FileWriter("d:\\唐诗.txt");
		   BufferedWriter bw=new BufferedWriter(writer);
		   bw.write("     静夜思");
		   bw.newLine();
		   bw.write("      作者:李白");
		   bw.newLine();
		   bw.close();
		   writer.close();
		   writer=new FileWriter("d:\\唐诗.txt",true);
		   bw=new BufferedWriter(writer);
		   bw.write("床前明月光,");
		   bw.newLine();
		   bw.write("疑是地上霜。");
		   bw.newLine();
		   bw.write("举头望明月,");
		   bw.newLine();
		   bw.write("低头思故乡。");
		   bw.close();
		   writer.close();
		   
		   //2.读取
		   //字符流
		   Reader reader=new FileReader("d:/唐诗.txt");
		   //读取器
		   BufferedReader br=new BufferedReader(reader);
		   String temp=null;
		   while((temp=br.readLine())!=null)
		   {
			   System.out.println(temp);
		   }
		   br.close();
		   reader.close();

案例二

2.使用代码复制一个图片,把原图片复制到D:/picture/图片.jpg当中 要求图片可以正常打开,字节流

public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		/**2.使用代码复制一个图片,把原图片复制到D:/picture/图片.jpg当中 要求图片可以正常打开*/
		File file=new File("C:\\Users\\12077\\Pictures/xiaoyuan.jpg");
		File  file2=new File("D:\\图片.jpg");
		if(!file2.exists()) {
			file2.createNewFile();
		}
		//FileInputStream和FileOutPutStream
		FileInputStream is=new FileInputStream(file);
		FileOutputStream oStream=new FileOutputStream(file2);
		//另一种处理方法
		//Byte[] buf=new Byte[in.available];
		//in=read(buf);
		//oStream=write(buf);
		int read=-1;
		while ((read=is.read())!=-1) {
			oStream.write(read);
		}
		is.close();
		oStream.close();
	}

String path="D:/Picture/A-Z/A.jpg";
		//复制到d:/Picture/图片.jpg
		File oldFile=new File(path);
		//字节流
		InputStream is=new FileInputStream(oldFile);
		byte [] datas=new byte[is.available()];
		is.read(datas);
		//创建输出流
		File newFile=new File("d:/Picture/图片.jpg");
		if(!newFile.exists())
			newFile.createNewFile();
		OutputStream os=new FileOutputStream(newFile);
		os.write(datas);
		os.close();
		is.close();
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值