IO流的学习(二)
来源:互联网 发布:a股程序化交易 知乎 编辑:程序博客网 时间:2024/05/17 23:21
IO字节流: InputStream 和 OutputStream
比如对一个图片数据进行操作时,就要用到字节流。
-----main----
FileOutputStream fos=new FileOutputStream("demo.txt") //创建一个字节输出流
fos.write("abc".getBytes()) //此处将字符串转为字节数组
fos.close(); //这里就不用刷新,因为此时没有使用缓冲区
例子:打印fox.txt 中的内容,采用read()字节数组的方法。
FileInputStream fis=new FIleInputStream(fox.txt); //建立字节读取流,和文件关联
byte[] by=new byte[1024];
int len=0;
while((len=fis.read(by)!=-1)) //该read方法每次取一个数组的数据,当取完之后,再取时则返回 -1;
{
System.out.println(new String(by,o,len)); //将字节数组转成字符串输出
}
————————
改字节流中有个方法::fis.available() 输出文件的字节数,当文件很小时,上面代码可以简写为:
byte[] by=new byte[fis.available()]; // 此处定义了和文件大小刚好的字节数组,可以刚好放下该文件,就避免了上面代码的循环读写数组。
fis.write(by); //但是一般不建议这样操作,因为一般文件较大,直接在内存在创建如此大的数组,容易内存溢出。
System.out.println(new String(by));
————————
常用对字节流文件的操作
FileInputStream FileOutputStream BufferedInputStream BufferedOutputStream
重点例子::从键盘获取对象。
1、从键盘获取字节流对象;
InputStream in=System.in;
2、使用转换流,让字节流对象转换为字符流对象。
InputStreamReader isr=new InputStreamReader(in);
3,为提高效率,将字符串进行缓冲区技术的高效操作。
BufferedReader bfr=new BufferedReader(isr);
将以上3步简化为::BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in)); 此句要求重点记忆,一旦涉及键盘录入,即可使用此句。因为Buffered可以按行操作,能提高效率
-----
同时对应的 将字符流转成字节流
OutputStream out=System.out;
OutputStreamWriter osw= new OutputStreamWriter(out);
BufferedWriter bfw=new BufferedWriter(osw);
简写: BufferedWriter bfw=new BufferedWriter(new OutputStreamWriter(System.out))
时候时候使用转换流呢?
转换流是字节流和字符流之间的桥梁。 通常涉及到字符编码的转换时,就需要转换流。
-------------
流操作的基本规律:: 两个明确:
1、明确 源和目的;
源:输入流, InputStream ,Reader
目的:输出流,OutputStream Writer
2、明确操作的是否是纯文本
是: 字符流
否:字节流
例如::复制一个文件, 分开对源和目的进行分析
对源:是一个纯文本文件,用Reader, 再是从硬盘上,那么就用FileReader.……………………
- IO流的学习(二)
- IO流学习(二)
- IO流学习二
- IO流的学习
- IO流的学习
- IO流的学习
- IO流的学习
- io流的学习
- java IO流学习笔记二
- JAVA学习二十:IO流
- 黑马程序员 IO流学习笔记二
- java--------学习之《IO流》二
- 字节流--IO学习笔记(二)
- Java IO流学习总结二:File
- IO流学习小结(二)
- IO学习笔记(二)
- IO学习(二)
- IO学习(二)
- frame页面跳转和信息提示页面
- 语句执行效率说明
- Java关键字及其含义
- 解决,eclipse 定期工作空间保存发生错误
- 可适应打印机部署(2)
- IO流的学习(二)
- 指针的使用
- SATA接口 IDE接口 双硬盘怎么样进行安装指导
- myeclipse9中导入的jquery文件报错(出现红叉叉,提示语法错误)
- 关于 -- IPhone 的音频队列服务
- Ubuntu10.10上成功安装Mesa-8.0.3
- stack
- VC怎么样利用MFC利用SDK画线例子
- AC 自动机