1. OutputStream:是个抽象类需要FileOutputStream来实现,以Stream结束的字节流,以Write结束的是字符流
2.文件字节输出流:FileOutputStream fos=new FileOutputStream("写入的地址")(文件找不到异常);此写入的方法具有文件覆盖的功能
3.文件写入和读取功能是需要关闭资源的;一个字节写入的方法:fos.write(100);这里的100是阿克斯码表来的,因为这里一次只能写入一个字符所以100是3个字符所以只能按照阿克斯 码表中的值来打印;如果要写100: fos.write(49)(1);fos.write(48)(0);fos.write(48)(0);只能这么凑
4.向文件中写入一个字节数组:byte[] bytes={66.67.68,69};fos.write(bytes);fos.write(bytes,1,2)这里的写入也可以选择数组具体从哪个下标开始写(1),一个写入几个数值(2)
5.FileOutputStream fos=new FileOutputStream("F:\demo0611\a.txt,true");叫true是续写;如果不写默认值是false那么就是覆盖
6.FileOutputStream fos=new FileOutputStream("F:\demo0611\a.txt",true);String str="
"+"你好";fos.write(str.getBytes());fos.close();
这是先定义一个要写入的String字符串然后把字符串转成字节数组,.getByte()通过.write()方法把字符串写入到指定目的地的文件中
7.文件读入:FileInputStream fis=new FileInputStream("地址") int len=0;while((len=fis.read())!=-1){system.out.println((char)len)}
因为len是int数值需要强转成char字符,也安装阿克斯码表的数值转的字符,
FileInputStream fis=new FileInputStream("地址") byte[]bytes=new byte[2]这里是一次读取几个字符的意思byte[2]; int len=0;while((len=fis.read(bytes))!=-1) {system.out.println(new String(bytes,0,len))}这里是把bytes数组转成了String字符打印;(bytes,0,len)这里的0是从数组下标0开始打印长度是len也就是传的字符个数,这样 就避免了重复打印最后一个字符的问题
8.文件的复制: 写入的地址:FileOutputStream fis=new FileOutputStream("地址"); 读取的地址:FileInputStream fis=new FileInputStream("地址");
一次读取的字符个数:Byte[] bytes=new Byte[1024]; 开始复制;int len=0;while((len=fis.read())!=-1){fos.write(bytes)}
9.非文本传输用字节流(如zip,jpg,视频等文件)(一帮传的是看不懂的文件如java的class文件);文本文件传输用字符流(如:word,txt)(一般是可以看懂的文件)
10.因为字码:ascii;中文:GBK,utf-8 拉丁文:iso-8859-1
11.char类型用的是unicode;String就是用的GBK表;GBK(一个字符俩字节);Utf-8(一个汉字三字节);常见编码:UTF-8;GBK;ISO-8859-1
12.编码:文字-->(数字);a.getBytes();解码:数字-->(文字):byte[] b={60,62} new String(b,0,len)
13.OutputStreamReader(也是字符流)Stream结尾是字节流;reader和write结尾的是字节流
14.FileReader是明确数据源(因为是读取拿数据);FileWriter是将字符写入目标地址
15.flush:可以调用多次,每次调用都会刷新,流还可以继续使用;close:只能调用一次,调用后也可刷新;每次调用后会关闭流
16.读取数据:FileReader fr=new FileReader("地址") int len=0;while((len=fr.read())!=-1){system.out.println((char)len)}
一次安数组读:FileReader fr=new FileReader("地址") char[] ch=new char[1024](因为这里是字符流所以是char不是byte) ;int len=0; while((len=fr.read(ch))!=-1) {system.out.println(new String(ch,0,len))}
17.FileWriter fw=new FileWriter("地址") char[] ch={"s","w","q"};int len=0;fw.write(ch,0,3);fw.flush();
18.复制:FileReader fr=new FileReader("地址"); FileWriter fw=new FileWriter("地址");int len=0; char[] ch=new char[1024];while((len=fr.read(ch))!=-1){
fw.writer(ch,0,len)} fw.flush;
FileReander fr=new FileReander("地址") FileWriter fw=new FileWriter("地址"); int len=0;while((len=fr.read())!=-1){fw.write(len) fw.flush}fr.close;fw.close;
FileReander fr=new FileReader("地址") FileWriter fw=new FileWriter("地址"); int len=0; char[] ch=new char[1024];while((len=fr.reader(ch))!=-1){
fw.writer(ch,0,len)}; FileReader fr=new FileReader("地址") int len=0;while((len=fr.read())!=-1){system.out.println((char)len)};
FileReader fr=new FileReader("地址") int len=0;char[] ch=new char[1024];while((len=fr.reader(ch))){system.out.println(new string(ch,0,len))} fr.flush();
FileWriter fw=new FileWriter("地址") int len=0;fw.wtrite(len); FileWriter fw=new Filewriter() char[] ch={66,63,""};fw.writer(ch,0,6)
FileReader fr=new FileReader() FileWrite fw=new FileWriter(); char[] ch=new char[1024]; int len=0;while((len=fr.reader(ch)!=-1){fw.writer(ch,0,len)} fr.close