黑马程序员——流对象的选择使用
来源:互联网 发布:office 破解版 知乎 编辑:程序博客网 时间:2024/05/16 11:00
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
java学记笔记之流对象的选择与使用方法
由于流对象有很多个,writer,reader,InputStream,OutputStream,应用时不知道具体该用哪一个,给我们带来困惑。
其实流对象的选择十分简单只要明确一下三点即可:
1、明确源和目的
源:输入流 可选InputStream、reader 体系
目的:输出路 可选 OutputStream、writer 体系
2、操作的数据是否是纯文本
是:使用字符流
否:使用字节流
3、当体系明确后,再明确要具体使用那个具体的对象
通过设备来进行区分:
源:内存,硬盘,键盘
目的:内存,硬盘,控制台
例一、将个文本数据存储到另一个文件中,复制文件
分析:源:纯文本文件 InputStream,Reader可选,因为是源所以使用读取流是不是操作文本文件,是!选Reader
体系就明确了。
接下来要使用该体系中的哪个对象?
明确设备:硬盘。Reader体系中的可以操作文件的FileReader
FileReader fr = new FileReader("a.txt");
文件是否较大需要使用缓冲区提高效率?是!
BufferedReader bufr = new BufferedReader(fr);
目的:OutputStream Writer
是否纯文本?是!Writer 设备:硬盘
Writer体系中可以操作文件的对象FileWriter
FileWriter fw = new FileWriter("b.txt");
文件是否较大需要提高效率?是!
BufferedWriter bufw = new BufferedWriter(fw);
具体代码如下:
public class Copy_file(){
public static void main(String[] args) throws IOException
{
FileReader fr = null;
FileWriter fw = null;
fr = new FileReader("a.txt");//初始化流对象
fw = new FileWriter("b.txt");
int ch = 0;
while((ch=fr.read())!=-1)
{
fw.write(ch);
}
if(fr!=null) fr.close();
if(fw!=null)fw.close();//关闭资源
}
}//这段代码没加缓冲区,大家自己试试加上缓冲区
例二、将一个图片文件数据存储到另一个文件中,文件复制
分析:
1、源:图片文件 InputStream Reader 操作的是图片文件
选 InputStream 体系明确
接下来明确体系中的那个对象:
设备:硬盘,图片文件
选用InputStream中可以操作文件FileInputStream
FileInputStream fis = new FileInputStream(“a.jpg”);
目的:OutputStream Writer
是否存在文本 否!OutputStream 设备:硬盘,一个图片
OutputStream中的 FileOutputStream
FileOutputStream fos = new FileOutputStream("b.txt");
代码如下
public class Pic_copy
{
public static void main(String[] args) throws IOException
{
FileInputStream fis = null;
FileOutputStream fos = null;
fis = new FileInputStream("a.jpg");
fos = new FileOutputStream("b.jpg");
byte[] buf = new byte[1024];
int len = 0;
while((len = fis.read(buf))!=-1){
fos.write(buf,0,len);
}
if(fis!=null) fis.close();
if(fos!=null)fos.close();
}
}
另外涉及到键盘输入时要用到转换流InputStreamReader
InputStream in = System.in;
InputStreamReader isr = new InputStreamReader(isr);
BufferedReader br = new BufferedReader(isr);
键盘录入的简写:BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
另涉及到想要将录入数据按照指定的编码表(utf-8),将数据存储到文件中。或则将指定编码表中的文件读出来。
因FileWriter 用的是默认码表 FileInputStream用到的也是默认码表
只有OutputStreamWriter转换流才可以指定编码表
OutputStreamWriter osw = new OutputStreamWriter((new FileWriter("a.txt")),"UTF-8");
InputStreamReader isr = new InputSteamReader((new FileReader("a.txt")),"UTF-8");
以上是我学些流操作的心得,如有不周,万望指正
- 黑马程序员——流对象的选择使用
- 黑马程序员_对象流的使用
- 黑马程序员——使用equals实现对象的比较
- 黑马程序员——IO流——IO体系、装饰设计模式、流对象的选择
- 黑马程序员—选择黑马,是我前进的方向
- 黑马程序员—面向对象的概念
- 黑马程序员_IO流——对象的序列化
- 《黑马程序员》io---file对象的使用
- 黑马程序员——C#选择结构的用法
- 黑马程序员——简析c语言的选择结构
- 黑马程序员——面向对象4:对象的初始化
- 黑马程序员——对象
- 黑马程序员—面向对象
- 黑马程序员—面向对象
- 黑马程序员—面向对象
- 黑马程序员——javascript语言的方法以及部分对象的使用学习日志
- 黑马程序员——OC—类和对象的使用
- 黑马程序员——面对对象之类的定义和使用
- 计算机图形学中的数学概念
- 求两个相交链表的首个相交节点(转)
- org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'xx' is defined
- swift扩展UIView实现动画依次执行
- Android学习资料下载及常用网站
- 黑马程序员——流对象的选择使用
- CSDN-markdown编辑器使用
- 批量添加用户
- 无线的省电模式
- 微软Visual Studio Code基本特征
- UVa 11561 - Getting Gold
- 安卓学习笔记之四(布局)
- Composer安装Yii2
- configure: error: cannot compute suffix of object files: cannot compile