黑马程序员_学习记录15:IO流
来源:互联网 发布:新手怎么淘宝购物 编辑:程序博客网 时间:2024/06/07 08:32
字符流和字节流:
字节流两个基类:
InputStream OutputStream
字符流两个基类:
Reader Writer
先学习一下字符流的特点。
既然IO流是用于操作数据的,
那么数据的最常见体现形式是:文件。
那么先以操作文件为主来演示。
需求:在硬盘上,创建一个文件并写入一些文字数据。
找到一个专门用于操作文件的Writer子类对象。FileWriter。 后缀名是父类名。 前缀名是该流对象的功能。
*/
import java.io.*;
class FileWriterDemo
{
public static void main(String[] args) throws IOException
{
//创建一个FileWriter对象。该对象一被初始化就必须要明确被操作的文件。
//而且该文件会被创建到指定目录下。如果该目录下已有同名文件,将被覆盖。
//其实该步就是在明确数据要存放的目的地。
FileWriter fw = new FileWriter("demo.txt");
调用write方法,将字符串写入到流中。
fw.write("abcde");
//刷新流对象中的缓冲中的数据。将数据刷到目的地中。
//fw.flush();
//关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据。将数据刷到目的地中。
//和flush区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭。
//将C盘一个文本文件复制到D盘。
/*
复制的原理:
其实就是将C盘下的文件数据存储到D盘的一个文件中。
步骤:
1,在D盘创建一个文件。用于存储C盘文件中的数据。
2,定义读取流和C盘文件关联。
3,通过不断的读写完成数据存储。
4,关闭资源。
*/
import java.io.*;
class CopyText
{
public static void main(String[] args) throws IOException
{
copy_2();
}
public static void copy_2()
{
FileWriter fw = null;
FileReader fr = null;
try
{
fw = new FileWriter("SystemDemo_copy.txt");
fr = new FileReader("SystemDemo.java");
char[] buf = new char[1024];
int len = 0;
while((len=fr.read(buf))!=-1)
{
fw.write(buf,0,len);
}
}
catch (IOException e)
{
throw new RuntimeException("读写失败");
}
finally
{
if(fr!=null)
try
{
fr.close();
}
catch (IOException e)
{
}
if(fw!=null)
try
{
fw.close();
}
catch (IOException e)
{
}
}
}
//从C盘读一个字符,就往D盘写一个字符。
public static void copy_1()throws IOException
{
//创建目的地。
FileWriter fw = new FileWriter("RuntimeDemo_copy.txt");
//与已有文件关联。
FileReader fr = new FileReader("RuntimeDemo.java");
int ch = 0;
while((ch=fr.read())!=-1)
{
fw.write(ch);
}
fw.close();
fr.close();
}
}
3、缓冲区
l
缓冲区的出现提高了对数据的读写效率。
对应类
• BufferedWriter
• BufferedReader
缓冲区要结合流才可以使用。在流的基础上对流的功能进行了增强。
l
字节流
基本操作与字符流类相同但它不仅可以操作字符,还可以操作其他媒体文件
转换流
l
InputStreamReader,OutputStreamWriter
l
转换流的由来
• 字符流与字节流之间的桥梁
• 方便了字符流与字节流之间的操作
l
转换流的应用
• 字节流中的数据都是字符时,转成字符流操作更高效。
l
标准输入输出流
System类中的字段:in,out。
它们各代表了系统标准的输入和输出设备。默认输入设备是键盘,输出设备是显示器。 System.in的类型是InputStream.System.out的类型是PrintStream是OutputStream的子类FilterOutputStream 的子类.
流的基本应用小节
l
流是用来处理数据的。处理数据时,一定要先明确数据源,与数据目的地(数据汇)。数据源可以是文件,可以是键盘。数据目的地可以是文件、显示器或者其他设备。而流只是在帮助数据进行传输,并对传输的数据进行处理,比如过滤处理.转换处理等。
File类
l
用来将文件或者文件夹封装成对象方便对文件与文件夹的属性信息进行操作。 File对象可以作为参数传递给流的构造函数。
l
递归
函数自己调用自己。
注意:递归时一定要明确结束条件。
应用场景:当某一功能要重复使用时。
IO包中的其他类
l
RandomAccessFile• 随机访问文件,自身具备读写的方法。
• 通过skipBytes(int x),seek(int x)来达到随机访问。
管道流• PipedInputStream和PipedOutputStream
• 输入输出可以直接进行连接,通过结合线程使用。
打印流 • PrintWriter与PrintStream
• 可以直接操作输入流和文件。l
序列流 • SequenceInputStream
• 对多个流进行合并。
操作对象 • ObjectInputStream与ObjectOutputStream
• 被操作的对象需要实现Serializable (标记接口);
操作基本数据类型• DataInputStream与DataOutputStream
操作字节数组• ByteArrayInputStream与ByteArrayOutputStream
操作字符数组• CharArrayReader与CharArrayWritel
操作字符串• StringReader 与 StringWriter
- 黑马程序员_学习记录15:IO流
- 黑马程序员_学习笔记IO流
- 黑马程序员_集合和IO学习
- 黑马程序员_关于io的学习
- 黑马程序员_学习记录04:数组
- 黑马程序员_学习记录07:继承
- 黑马程序员_学习记录10:异常
- 黑马程序员_学习记录11:多线程
- 黑马程序员_学习记录14:Map
- 黑马程序员_学习记录16:GUI
- 黑马程序员_学习记录22:JavaBean
- 黑马程序员_输入输出流(IO)
- 黑马程序员_源自梦想 IO流
- 黑马程序员_IO流
- 黑马程序员_强大的IO流
- 黑马程序员-学习-IO流
- 黑马程序员 IO流学习
- 黑马程序员:IO流学习
- python发送post请求
- 黑马程序员_学习记录13:集合框架
- vim无法安装,更新又提示Ubuntu无法获得锁/var/lib/dpkg/lock
- post方式提交数据xml数据!该怎么解决
- 黑马程序员_学习记录14:Map
- 黑马程序员_学习记录15:IO流
- 黑马程序员_学习记录16:GUI
- 黑马程序员_学习记录17:网络编程
- 黑马程序员_学习记录18:7K月薪面试题破解之一_交通灯管理系统
- ubuntu12.04安装
- 黑马程序员_学习记录19:7K月薪面试题破解之二_银行业务调度系统
- TCP协议三次握手过程分析
- APT对传统反病毒技术的威胁和我们的应对尝试
- socket通讯原理以及tcp、ip三次握手机制分析