本文内容

文件输出流、缓存、文件复制
outText();//使用字节输出字符串到txt文件(或追加内容)
appendText();//使用RandomAccessFile(此类还可以进行读操作)向文件中追加内容
charOutText();//使用字符输出流,将字符串输出到txt中
bufferCharOutText();//加缓存的、按字符输出(按字节输出一样)
readOutZip();//读取文件然后写入到另一个路径下(相当于拷贝)

package com.io.file;import java.io.*;public class OutFile {public static void main(String[] args) {//outText();//使用字节输出字符串到txt文件(或追加内容)//appendText();//使用RandomAccessFile(此类还可以进行读操作)向文件中追加内容//charOutText();//使用字符输出流,将字符串输出到txt中//bufferCharOutText();//加缓存的、按字符输出(按字节输出一样)readOutZip();//读取文件然后写入到另一个路径下(相当于拷贝)}/*** 读取文件(按字节)然后写入到另一个路径下(相当于拷贝)*/private static void readOutZip() {//File.separator是为了避免因路径符(在不同系统中是不一样的)不正确引起的路径错误File infile = new File("D:"+File.separator+"A_软件工具包/《植物大战僵尸》跳关修改器.rar");File outfile = new File("G:"+File.separator+"A_软件工具包/《植物大战僵尸》跳关修改器.rar");//此处需创建父目录,如果没有父目录,则会报错,找不到路径if(!outfile.getParentFile().exists()){outfile.getParentFile().mkdirs();}InputStream in = null;BufferedInputStream bufIn = null;OutputStream out = null;BufferedOutputStream bufOut =null;try {in = new FileInputStream(infile);bufIn = new BufferedInputStream(in);byte [] bytes = new byte[102400];out = new FileOutputStream(outfile);bufOut = new BufferedOutputStream(out);int length;while ((length = bufIn.read(bytes)) != -1){System.out.println(length);bufOut.write(bytes,0,length);bufOut.flush();}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally {if(bufOut != null){try {bufOut.close();} catch (IOException e) {e.printStackTrace();}}if(out != null){try {out.close();} catch (IOException e) {e.printStackTrace();}}if(bufIn != null){try {bufIn.close();} catch (IOException e) {e.printStackTrace();}}if(in != null){try {in.close();} catch (IOException e) {e.printStackTrace();}}}}/*** 加缓存的、按字符输出*/private static void bufferCharOutText() {File file = new File("G:/test/BufferedCharText.txt");String content = "汉皇重色思倾国,御宇多年求不得。\n杨家有女初长成,养在深闺人未识。\n天生丽质难自弃,一朝选在君王侧。\n回眸一笑百媚生,六宫粉黛无颜色。\n春寒赐浴华清池,温泉水滑洗凝脂。\n侍儿扶起娇无力,始是新承恩泽时。\n云鬓花颜金步摇,芙蓉帐暖度春宵。\n春宵苦短日高起,从此君王不早朝。\n承欢侍宴无闲暇,春从春游夜专夜。\n后宫佳丽三千人,三千宠爱在一身。\n金屋妆成娇侍夜,玉楼宴罢醉和春。\n姊妹弟兄皆列土,可怜光彩生门户。\n遂令天下父母心,不重生男重生女。\n骊宫高处入青云,仙乐风飘处处闻。\n缓歌慢舞凝丝竹,尽日君王看不足。\n渔阳鼙鼓动地来,惊破霓裳羽衣曲。\n九重城阙烟尘生,千乘万骑西南行。\n翠华摇摇行复止,西出都门百余里。\n六军不发无奈何,宛转蛾眉马前死。\n花钿委地无人收,翠翘金雀玉搔头。\n君王掩面救不得,回看血泪相和流。\n黄埃散漫风萧索,云栈萦纡登剑阁。\n峨嵋山下少人行,旌旗无光日色薄。\n蜀江水碧蜀山青,圣主朝朝暮暮情。\n行宫见月伤心色,夜雨闻铃肠断声。\n天旋地转回龙驭,到此踌躇不能去。\n马嵬坡下泥土中,不见玉颜空死处。\n君臣相顾尽沾衣,东望都门信马归。\n归来池苑皆依旧,太液芙蓉未央柳。\n芙蓉如面柳如眉,对此如何不泪垂。\n春风桃李花开夜,秋雨梧桐叶落时。\n西宫南苑多秋草,落叶满阶红不扫。\n梨园弟子白发新,椒房阿监青娥老。\n夕殿萤飞思悄然,孤灯挑尽未成眠。\n迟迟钟鼓初长夜,耿耿星河欲曙天。\n鸳鸯瓦冷霜华重,翡翠衾寒谁与共。\n悠悠生死别经年,魂魄不曾来入梦。\n临邛道士鸿都客,能以精诚致魂魄。\n为感君王辗转思,遂教方士殷勤觅。\n排空驭气奔如电,升天入地求之遍。\n上穷碧落下黄泉,两处茫茫皆不见。\n忽闻海上有仙山,山在虚无缥渺间。\n楼阁玲珑五云起,其中绰约多仙子。\n中有一人字太真,雪肤花貌参差是。\n金阙西厢叩玉扃,转教小玉报双成。\n闻道汉家天子使,九华帐里梦魂惊。\n揽衣推枕起徘徊,珠箔银屏迤逦开。\n云鬓半偏新睡觉,花冠不整下堂来。\n风吹仙袂飘飖举,犹似霓裳羽衣舞。\n玉容寂寞泪阑干,梨花一枝春带雨。\n含情凝睇谢君王,一别音容两渺茫。\n昭阳殿里恩爱绝,蓬莱宫中日月长。\n回头下望人寰处,不见长安见尘雾。\n惟将旧物表深情,钿合金钗寄将去。\n钗留一股合一扇,钗擘黄金合分钿。\n但令心似金钿坚,天上人间会相见。\n临别殷勤重寄词,词中有誓两心知。\n七月七日长生殿,夜半无人私语时。\n在天愿作比翼鸟,在地愿为连理枝。\n天长地久有时尽,此恨绵绵无绝期。\n#end\n";//此处创建不创建文件都可以,但是需要创建父目录,如果没有父目录,则会报错,找不到路径if(!file.getParentFile().exists()){file.getParentFile().mkdirs();}Writer writer = null;BufferedWriter bufferedWriter = null;try {writer = new FileWriter(file,true);//缓冲区大小默认是8K,查看源码defaultCharBufferSize = 8192;//每次直接写入磁盘,效率低,加上缓存后,先将内容写入到缓存中,等缓存满了在写入到文件中bufferedWriter = new BufferedWriter(writer);bufferedWriter.write(content);bufferedWriter.flush();//此处刷新会立即写入,如果此句不写,则在close时,写入文件} catch (IOException e) {e.printStackTrace();}finally {if(bufferedWriter != null){try {bufferedWriter.close();} catch (IOException e) {e.printStackTrace();}}if(writer != null){try {writer.close();} catch (IOException e) {e.printStackTrace();}}}}/*** 使用字符输出流,将字符串输出到txt中*/private static void charOutText() {File file = new File("G:/test/CharText.txt");//此处创建不创建文件都可以,但是需要创建父目录,如果没有父目录,则会报错,找不到路径if(!file.getParentFile().exists()){file.getParentFile().mkdirs();}Writer writer = null;try {writer = new FileWriter(file,true);//writer.write("输出字符!\n");writer.append('草');} catch (IOException e) {e.printStackTrace();}finally {if(writer != null){try {writer.close();} catch (IOException e) {e.printStackTrace();}}}}/*** 使用字节方式向文件中追加内容*/private static void appendText() {File file = new File("G:/test/outText1.txt");//此处创建不创建文件都可以,但是需要创建父目录,如果没有父目录,则会报错,找不到路径if(!file.getParentFile().exists()){file.getParentFile().mkdirs();}RandomAccessFile randomAccessFile = null;try {//第二个参数:r:只读;rw:读写;rws:写操作时,同步刷新到磁盘,刷新内容和元数据;rwd:写操作时,同步刷新到磁盘,刷新内容;randomAccessFile = new RandomAccessFile(file,"rw");//获取文件长度long fileLength = randomAccessFile.length();//将写文件的指针移到文件尾randomAccessFile.seek(fileLength);/*** 此处有中文乱码的坑* String.getBytes();默认会选取系统中的编码格式,而idea中的项目一般默认是UTF-8,获取此项目的编码即为UTF-8。* 但是windows(中国版)默认编码为GBK,向文件中输出时,输出的是UTF-8的字节数组,自然会中文乱码** 一般此处不使用writeBytes(String str),因为底层转化成字节数组时,使用UTF-8编码* 此处建议使用write(Byte [] byte),使用程序控制编码*/randomAccessFile.write("追加内容\n".getBytes("GBK"));//String.getBytes():会按照系统默认编码获取字符串的字节码} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally{if(randomAccessFile != null){try {randomAccessFile.close();} catch (IOException e) {e.printStackTrace();}}}}/*** 使用字节输出字符串到txt文件(或追加内容)*/private static void outText() {File file = new File("G:/test/outTxt.txt");//此处创建不创建文件都可以,但是需要创建父目录,如果没有父目录,则会报错,找不到路径if(!file.getParentFile().exists()){file.getParentFile().mkdirs();}byte [] bytes = "OutPutStream输出到文件中\n".getBytes();OutputStream out = null;try {//FileOutputStream(File file):此种输出会覆盖原有内容//FileOutputStream(File file,String append):此种输出会追加内容//默认保存文件格式编码为UTF-8out = new FileOutputStream(file,true);out.write(bytes);bytes = "追加内容\n".getBytes();out.write(bytes);} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally {if(out != null){try {out.close();} catch (IOException e) {e.printStackTrace();}}}}}

java输出流_缓存_复制文件相关推荐

  1. transferto 文件不存在_通过通道复制文件transferTo

    import static java.nio.file.StandardOpenOption.*; import java.nio.file.*; import java.nio.channels.* ...

  2. html访问java接口出现缓存_一个牛逼的多级缓存实现方案

    点击上方"java进阶架构师",选择右上角"置顶公众号" 20大进阶架构专题每日送达 TMC,即"透明多级缓存(Transparent Multile ...

  3. python中shutil.copyfile的用法_用Python复制文件的9个方法

    Python 中有许多"开盖即食"的模块(比如 os,subprocess 和 shutil)以支持文件 I/O 操作.在这篇文章中,你将会看到一些用 Python 实现文件复制的 ...

  4. python os复制文件_用Python复制文件的九种方法

    以下是演示"如何在Python中复制文件"的九种方法. shutil copyfile()方法 shutil copy()方法 shutil copyfileobj()方法 shu ...

  5. java中io与nio复制文件性能对比

    2019独角兽企业重金招聘Python工程师标准>>> 1.  在JAVA传统的IO系统中,读取磁盘文件数据的过程如下: 以FileInputStream类为例,该类有一个read( ...

  6. java 无锁缓存_如何在高并发环境下设计出无锁的数据库操作(Java版本)

    一个在线2k的游戏,每秒钟并发都吓死人.传统的hibernate直接插库基本上是不可行的.我就一步步推导出一个无锁的数据库操作. 1. 并发中如何无锁. 一个很简单的思路,把并发转化成为单线程.Jav ...

  7. html访问java接口出现缓存_高可用架构设计(3) -电商商品详情页缓存背景及框架说明...

    Github 0 导读 我们这个教程,基于hystrix,如何来构建高可用的分布式系统的架构,项目实战 模拟真实业务的这么一个小型的项目,来全程贯穿,用这个项目中的业务场景去一个一个的讲解hystri ...

  8. java 页面级缓存_用CashFilter实现页面级缓存实践

    1.MySQL在本地localhost的test数据库 建person表,暂以字段id,name,passWord ,表中可输入一行值. 2.建类 DAOUtil import  java.sql.C ...

  9. java mysql 二级缓存_深入理解MyBatis中的一级缓存与二级缓存

    http://blog.csdn.net/weixin_36380516/article/details/73194758 先说缓存,合理使用缓存是优化中最常见的,将从数据库中查询出来的数据放入缓存中 ...

最新文章

  1. 越来越复杂,为什么是中台?
  2. python for arcgis_面向ArcGIS的Python脚本编程 ([美]赞德伯根) 中文pdf扫描版[50MB]
  3. java中程序执行顺序
  4. android向h5传递参数,H5与安卓传递多个参数
  5. 安全基础知识 最强0到33600端口详解
  6. 精通Hyperledger之Hyperledger composer查询语言(17)
  7. ​发那科机器人PROFINET 主站配置
  8. ajax菜鸟教程html,菜鸟教程--AJAX
  9. FGUI使用方法(四):List列表的详细使用方式,包括List嵌套List
  10. esp32的MQTT物联网开发记录
  11. IntelliJ IDEA自制主题theme--Type Color
  12. 熊乃学 计算机,吴谋博士研究成果在权威期刊在线发表
  13. 手机微信发语音没有声音
  14. Java查询月份天数
  15. jq实现复制文本功能
  16. centos8搭建maven私服(含nexus-3.28.1-01.tar.gz下载链接)
  17. 80老翁谈人生(168):北京大学欠老翁的情,欠老翁的债
  18. RFC3164 – BSD Syslog协议
  19. 亲测好用!四款ps小白也能用的宣传印刷物料!
  20. delphi的connection closed Gracefully错误

热门文章

  1. 宝宝身高体重标准参考
  2. oracle将字段nullable设为Y,Oracle10g中约束与列属性NULLABLE的关系
  3. 2.龙芯2k1000 linux3.10内核编译过程
  4. 行为驱动测试模型Behave
  5. 诗人、录音师......海南旅途中的“神仙岗位”,等你来体验
  6. 如何选择“好公司”和“便宜的好公司”!股票量化分析工具QTYX-V2.2.0
  7. [Postman]400 Bad Request
  8. 上传本地项目到github
  9. 计算机组成原理——硬布线控制器设计(2)
  10. 算法分析与设计——贪心法实验报告