Java学习笔记37(字节流)
2018-06-18 03:51:05来源:未知 阅读 ()
输出:程序到文件
输入:文件到程序
字节输出流:OutputStream类
作用:在java程序中写文件
这个类是抽象类,必须使用它的子类
方法:
写入:
package demo; import java.io.FileOutputStream; import java.io.IOException; public class OutputStream { public static void main(String[] args) throws IOException { FileOutputStream fos = new FileOutputStream("d:\\java.txt"); fos.write(100);// 写入d byte[] bytes = { 65, 66, 67, 68 }; fos.write(bytes);// 写入ABCD fos.write(bytes, 1, 2);// 写入BC //写字符串,需要String类的方法 fos.write("java".getBytes());//写入java fos.close(); } } // 如果文件不存在,自动创建一个文件 // 如果存在则覆盖,因此使用时候有风险
续写:
package demo; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; public class FileOutputStreamDemo { public static void main(String[] args) throws IOException { File file = new File("d:\\java.txt"); FileOutputStream fos = new FileOutputStream(file, true); fos.write("hello\r\n".getBytes());// 写hello后换行 fos.write("world".getBytes()); fos.close(); } } // 这里每次打开运行,如果文件存在,不会覆盖,而是新的内容追加到后面
异常处理(实际开发中需要):
package demo; import java.io.FileOutputStream; import java.io.IOException; public class FileOutputStreamDemo3 { public static void main(String[] args) { //try 外面声明变量,try 里面建立对象 FileOutputStream fos = null; try{ fos = new FileOutputStream("d:\\a.txt"); fos.write(100); }catch(IOException ex){ System.out.println(ex); throw new RuntimeException("文件写入失败,重试"); }finally{ try{ if(fos!=null) fos.close(); }catch(IOException ex){ throw new RuntimeException("关闭资源失败"); } } } }
输入流:InputStream类:
读取文件:
package demo; import java.io.FileInputStream; import java.io.IOException; public class FileInputStreamDemo { public static void main(String[] args) throws IOException{ FileInputStream fis = new FileInputStream("c:\\a.txt"); //读取一个字节,调用方法read 返回int //使用循环方式,读取文件, 循环结束的条件 read()方法返回-1 int len = 0;//接受read方法的返回值 while( (len = fis.read()) != -1){ System.out.print((char)len); } //关闭资源 fis.close(); } }
读取字节数组:
package demo; import java.io.FileInputStream; import java.io.IOException; public class FileInputStreamDemo { public static void main(String[] args) throws IOException { FileInputStream fis = new FileInputStream("c:\\a.txt"); //创建字节数组,通常是1024 byte[] b = new byte[1024]; int len = 0 ; while( (len = fis.read(b)) !=-1){ System.out.print(new String(b,0,len)); } fis.close(); } }
简单的文件复制:
用InputStream读取,OutputStream写
第一种(核心代码很简单,不过加上了异常处理显得复杂):
package demo; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class Copy { public static void main(String[] args) { FileInputStream fis = null; FileOutputStream fos = null; try { fis = new FileInputStream("d:\\java.txt"); fos = new FileOutputStream("e:\\a.txt"); int len = 0; while ((len = fis.read()) != -1) { fos.write(len); } } catch (IOException ex) { System.out.println(ex); throw new RuntimeException("文件复制失败"); } finally { try { if (fos != null) { fos.close(); } } catch (IOException ex) { throw new RuntimeException("释放资源失败"); } finally { try { if (fis != null) { fis.close(); } } catch (IOException ex) { throw new RuntimeException("释放资源失败"); } } } } }
可以复制所有文件,不过运行速度相对慢,如果复制大文件,循环次数多耗时长
采用数组缓冲提高效率:
package demo; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class Copy1 { public static void main(String[] args) { FileInputStream fis = null; FileOutputStream fos = null; try{ //复制一部较大的视频 fis = new FileInputStream("f:\\AV.ev4"); fos = new FileOutputStream("d:\\study.ev4"); //定义一个字节数组,缓冲 byte[] bytes = new byte[1024*10]; int len = 0; while((len = fis.read(bytes))!=-1){ fos.write(bytes,0,len); } } catch (IOException ex) { System.out.println(ex); throw new RuntimeException("文件复制失败"); } finally { try { if (fos != null) { fos.close(); } } catch (IOException ex) { throw new RuntimeException("释放资源失败"); } finally { try { if (fis != null) { fis.close(); } } catch (IOException ex) { throw new RuntimeException("释放资源失败"); } } } } } //发现很快的速度视频就复制好了
可以发现效率提高很大
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:字节码技术及动态代理
下一篇:java实现两个int数交换
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash