java输入与输出(I/O)(一):FileInputStream、FileOutputStream
来源:互联网 发布:系统之家手机数据恢复 编辑:程序博客网 时间:2024/05/18 07:39
java输入输出是编程主题之一,对数据的读取以及文件的使用都是很常见的。Java的核心库java.io提供了全面的IO接口。包括:文件读写、标准设备输出等。Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入。
对流的理解:
流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样。
Java流的分类:
输入流: 程序可以从中读取数据的流。
输出流: 程序能向其中写入数据的流。
根据数据传输单位可分为:
字节流: 以字节为单位传输数据的流
字符流: 以字符为单位传输数据的流
按功能分:
节点流: 用于直接操作目标设备的流
过滤流: 是对一个已存在的流的链接和封装,通过对数据进行处理为程序提供功能强大、灵活的读写功能
JDK所提供的所有流类位于java.io包中,都分别继承自以下四种抽象流类。InputStream、OutputStream、Reader、Writer。
说流之前还是先来看看文件吧,毕竟很多时候流操作的对象是文件。
1) 获取文件的基本属性方法:getName(),getParent(),getPath()来获取文件路径和文件名等等信息。
File f=new File("d:\\","file.txt"); System.out.println(f.getName()); System.out.println(f.getParent()); System.out.println(f.getPath());
用File类在d盘根目录下创建一个file.txt文件。分别获取该文件的名称、根目录、路由。
2)文件常见方法
isDirectory():判断文件对象是否是目录,返回布尔类型
exists():判断文件对象是否存在,返回布尔类型
createNewFile():创建文件
isFile():判断给定文件名是否为正常的文件,返回布尔
lastModified():返回表示此抽象路径名的文件的最后修改时间
length():测试文件长度
File f1=new File("d:\\filetest","1.txt"); File f2=new File("d:\\filetest","2.txt"); File f3=new File("d:\\filetest","3.txt"); try{ f1.createNewFile(); f2.createNewFile(); f3.createNewFile(); }catch(Exception e) { }
3)输入流的使用
File f=new File("C:\\Users\\Administrator\\Desktop\\filetest\\file.txt"); FileInputStream fis = new FileInputStream(f); char ch; for (int i = 0; i < f.length(); i++) { ch = (char) fis.read(); System.out.print(ch); } fis.close();
分析上面的代码段:首先是在桌面创建了一个file.txt的文件 ,接着创建输入流对象fis,实现的功能是循环输出文件里面的字符。最后别忘了要用close()关闭输入流。另外需要注意的是使用文件流需要抛出异常。
4)文件输出流
File f=new File("C:\\Users\\Administrator\\Desktop\\filetest\\file.txt"); FileOutputStream fos=new FileOutputStream(f); for(int i='a';i<='z';i++) { fos.write(i); fos.write(' '); } fos.close();
与文件输入流创建过程基本一致,上例通过创建文件输出流将a~z26个小写字母写进文件里面。
5) 用文件读写方式实现简单的复制功能。即从一个文件里面读,再写到另外一个文件。
File f=new File("d:\\filetest\\file.txt"); File f1=new File("d:\\filetest\\file2.txt"); FileInputStream fis=new FileInputStream(f); FileOutputStream fos=new FileOutputStream(f1); byte[] b=new byte[(int)f.length()]; fis.read(b); for(int i=0;i<f.length();i++) { fos.write(b[i]); } fis.close(); fos.close();
以上代码中创建了一个字节型数组,数组大小就是已知文件长度。可以通过read操作一次性读取整个数组的所有数据,再用for循环写进已经创建好的文件中就可以。
1 0
- java输入与输出(I/O)(一):FileInputStream、FileOutputStream
- I/O(一)FileInputStream/FileOutputStream
- Java8 I/O源码-FileInputStream与FileOutputStream
- Java I/O流-FileInputStream、FileOutputStream
- IO 输入与输出(3) -- 节点流之二FileInputStream和FileOutputStream
- Java_IO 文件输入流(FileInputStream)与文件输出流(FileOutputStream)
- java系统学习(十一) --------输入与输出(I/O)
- java-I/O File类(3)-FileInputStream/FileOutputStream
- java基础I/O系列--FileInputStream 和 FileOutputStream 介绍
- JAVA高级视频02_IO输入与输出 05 FileInputStream和FileOutPutStream
- 关于FileInputStream和FileOutputStream输入流与输出流问题
- Java文件输入/输出流 FileOutputStream和FileInputStream
- Java之IO(一) FileInputStream、FileOutputStream、BufferedInputStream、BufferedOutputStream
- I/O流之--FileOutputStream 和FileInputStream
- I/O(输入/输出)
- 【File】文件输入/输出。FileInputStream/FileOutputStream类
- java I/O流,输入流,输出流,输入输出流,InputStream,FileInputStream,文件流,byte,url
- java IO笔记(FileInputStream/FileOutputStream)
- JAX-RS入门 四: 注入
- lazarus:一个字体引擎例子
- java序列化与反序列化
- 浅谈Redis的键值设计
- Maven+SpringMVC+MyBatis的环境搭建(二)
- java输入与输出(I/O)(一):FileInputStream、FileOutputStream
- SpringMVC利用MultipartFile进行文件上传
- sql好文分享
- oracle使用数据泵导入导出数据
- 【iOS】CoreBluetooth1 初识
- JAX-RS入门 五: 自动类型转换
- Bitmap基本概念及在Android4.4系统上使用BitmapFactory的注意事项
- CMSampleBufferRef与byte*互相转换(audio)
- Android监控WIFI和GSM状态并绘制网络强度