写出一个字符
void
写出一个字符串
void write( str,int off,int len)
写出一个字符串的一部分
void write(char[ ] cbuf)
写出一个字符数组
void write(char[ ] cbuf,int off,int len)
写出字符数组的一部分
注意:
public static void main(String[] args) throws IOException {//参数为true,表示打开续写,默认为false,即关闭续写//殷勤昨夜三更雨,又得浮生一日凉 。——《鹧鸪天·林断山明竹隐墙》是a1.txt文件的内容FileWriter f1=new FileWriter("D:\\我的世界\\a1.txt",true);FileWriter f2=new FileWriter(new File("D:\\我的世界\\a1.txt"),true);//write(int c)//注意字节输出流和字符输出流的区别//字节输出流一次只能写入一个字节//字符输出流一次可以写入多个字节//写入到文件里的是字符集上对应的整数f1.write(25105);//这里是汉字 我 ,在Unicode中三个字节,所以在字节输出流中写不了//write(String str)f1.write("\r\n何日功成名遂了,还乡,醉笑陪公三万场 。");//write(String str,int off,int len)f1.write("\r\n何日功成名遂了,还乡,醉笑陪公三万场 。",0,9);//write(char[ ] cbuf)char []chars={'\r','\n','1','2','3','4','5'};f1.write(chars);//write(char[ ] cbuf,int off,int len)f1.write(chars,0,5);f1.close();//殷勤昨夜三更雨,又得浮生一日凉 。——《鹧鸪天·林断山明竹隐墙》我////何日功成名遂了,还乡,醉笑陪公三万场 。//何日功成名遂了//12345//123}
字符输入流原理解析
字符流读取数据时
数据源和内存先建立流通道,然后内存里会创建一个长度为8192的缓冲区
开始读取时,read方法会先从缓冲区寻找数据,会先判断缓冲区是否有数据,如果缓冲区没有数据,就从文件中读取数据,尽可能装满缓冲区,如果有数据,就直接从缓冲区读取数据,如果文件中也没有数据,就会返回-1
读取的数据存入缓冲区后,如果下面用清空文件,那么再次读取时只能读取到缓冲区的数据,未存入缓冲区的数据不能再读取
字符输出流底层原理
字符流写出数据时
数据源和内存先建立流通道,然后内存里会创建一个长度为8192的缓冲区
有两种方式可以让缓冲区的数据存储到目的地
1.缓冲区装满了
2.手动刷新(flush)
3.close方法
flush刷新完成后,还可以继续往文件中写入数据
字节流和字符流的使用场景
字节流:可以拷贝任意类型的文件
字符流:读取纯文本文件中的数据,往纯文本文件中写出数据
综合练习
public static void main(String[] args) throws IOException {File fu=new File("D:\\我的世界\\three");File f1=new File("D:\\我的世界\\one");CopyFolder(fu,f1);}public static void CopyFolder(File copyFile,File file) throws IOException {if(file.isDirectory()){File[] files = file.listFiles();for (File file1 : files) {if(file1.isFile()){//文件的copyString name = file1.getName();File newFile=new File(copyFile,name);FileOutputStream fos=new FileOutputStream(newFile);FileInputStream fis=new FileInputStream(file1);byte[]bytes=new byte[1024*1024];int len;while ((len=fis.read(bytes))!=-1){fos.write(bytes,0,len);}fis.close();fos.close();} else{String name = file1.getName();File newFile=new File(copyFile,name);newFile.mkdirs();//子文件夹的copyCopyFolder(newFile,file1);}}}}
异或^计算符,两边相同为false,两边不同为true
一个数异或另外一个数两次,这个数还会变为原来的数
例如:
sout(false^false);//falsesout(true^true);//falsesout(false^true);//truesout(true^false);//truesout(100^10)//110sout(100^10)//100
- 央视春晚,我眼中的三宗“最” 中国之最节目串词
- 新闻特写拯救“巴斯”:吉尼斯纪录背后的“世界难题” 一 吉尼斯记录心情低落
- 这5种食物是隐藏的“热量炸弹”,小心吃完伤肝脏、毁血管、减寿命 吉尼斯记录热量炸弹
- 全世界“最顶级”的啤酒,却是一群和尚酿的!看完颠覆认知 吉尼斯记录的啤酒
- 视印度女子教育为“新鲜事”的环境下,塞兰坡差会建立的女子学校 吉尼斯记录印度学校
- 十二生肖:成龙的国际影响力能有多大?一部电影让法国归还文物 吉尼斯记录成龙
- 泰勒破纪录共获29座奖杯,身披粉红战袍热辣开唱,逆天长腿太吸睛 泰勒的吉尼斯记录
- 王者荣耀:真相了,排位赛真的段位越高越好打,因为低段位事真多 王者荣耀七大历史之最
- 欧洲杯巡礼之葡萄牙:C罗最后的倔强!卫冕冠军遭法德围剿 葡萄牙欧洲杯历史之最
- 盘点那些不符合发明者想法的发明,你知道几个? 坊子历史之最是谁发明的