黑马程序员———IO(上)
来源:互联网 发布:网络摄像头安装视频 编辑:程序博客网 时间:2024/06/13 17:27
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
IO流用来处理设备之间的数据传输
Java对数据的操作是通过流的方式
Java用于操作流的对象都在IO包中
流按操作数据分为两种:字节流和字符流
流按流分为:输入流和输出流
IO流常用基类:
字节流的抽象基类:
InputStream OutputStream
字符流的抽象基类:
Reader Writer
注:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。
如:InputStream的子类FileInputStream
如:Reader的子类FileReader。
前缀名可以理解为该流对象的功能。
既然IO流是用于操作数据的,那么数据的最常见体现形式是:文件。
那么先以操作文件为主来演示。
需求:
在硬盘上,创建一个文件并写入一些文字数据。
找到一个专门用于操作文件的Writer子类对象FileWriter。
FileWriter extends OutputStreamWriter
用来写入字符文件的便捷类。此类的构造方法假定默认的字符编码和
默认字节缓冲区都是可接受的。要自己制定这些值,可以先在FileOutputStream
上构造一个OutputStreamWriter。
FileWriter用于写入字符流。要写入原始字节流,考虑使用FileOutputStream。
==============================================================
public class FileWriterDemo {
public static void main(String[] args) throws IOException {
/*
下面try catch finally有三个代码块,而关闭流操作需要访问FileWriter对象,那么需要
把建立引用放在异常处理的代码块之外,在try代码块中初始化,
否则放在try代码块中finally代码块无妨访问fw。
*/
FileWriter fw = null;
try {
/*
创建一个FileWriter对象,该对象一被初始化就必须要明确被操作的文件。
而且该文件会被创建到指定目录下,如果该目录下已有同名文件,将被覆盖。
这一步就是在明确数据要存放的目的地。
*/
fw = new FileWriter("demo.txt");
/*
调用write方法,将字符串写入到流中。
*/
fw.write("over the rainbow");
/*
刷新流对象中的缓冲中的数据。将数据刷到目的地中。
*/
fw.flush();
} catch (IOException e) {
throw new IOException("文件名错误或文件路径错误或内存溢出");
}
finally
{
/*
关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据,将数据刷到目的地中。
和flush的区别:
flush刷新后,流还可以继续使用。
close刷新后,流会关闭。
*/
try {
fw.close();
}catch(IOException e){
throw new IOException("关闭流失败");
}
}
}
}
============================================================
异常处理:
/*
下面try catch finally有三个代码块,而关闭流操作需要访问FileWriter对象,那么需要
把建立引用放在异常处理的代码块之外,在try代码块中初始化,
否则放在try代码块中finally代码块无妨访问fw。
*/
java.io.FileNotFoundException: k:\demo.txt (系统找不到指定的路径。)
Exception in thread "main" java.lang.NullPointerException
at cn.itcast.IO.FileWriterDemo2.main(FileWriterDemo2.java:33)
出现了文件找不到异常,表明了文件创建失败。则fw的指向为null。在finally中一定会执行语句fw.close();
但是却无法调用close,这时,为了提高代码的健壮性,需要对它进行判断.
==============================================================
/*
演示对已有文件的续写:
FileWriter的构造函数:
FileWriter(File file)
FileWriter(String fileName)
FileWriter(String fileName,boolean append)
根据给定的文件名以及提示是否附加写入数据的boolean值来构造FileWriter对象。
传递一个true参数,代表不覆盖已有的文件,并在已有的文件末尾处进行数据续写。
FileWriter fw = new FileWriter("demo.txt",true);
\n 换行符
\r 回车符
*/
==============================================================
package cn.itcast.IO;
/*
第二种方式:通过字符数组进行读取。
*/
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class FileReaderDemo2 {
public static void main(String[] args)
{
FileReader fr = null;
try {
fr = new FileReader("demo.txt");
/*
定义一个字符数组,用于存储读到的字符。
该read(char[] )返回的是读到字符个数。
*/
char[] buf = new char[1024];
int num = 0;
while((num = fr.read(buf))!=-1)
{
System.out.println(new String(buf,0,num));;
}
} catch (FileNotFoundException e) {
System.out.println(e.toString());
} catch (IOException e) {
System.out.println(e.toString());
} finally {
try {
fr.close();
} catch (IOException e) {
System.out.println(e.toString());
}
}
}
}
Java对数据的操作是通过流的方式
Java用于操作流的对象都在IO包中
流按操作数据分为两种:字节流和字符流
流按流分为:输入流和输出流
IO流常用基类:
字节流的抽象基类:
InputStream OutputStream
字符流的抽象基类:
Reader Writer
注:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。
如:InputStream的子类FileInputStream
如:Reader的子类FileReader。
前缀名可以理解为该流对象的功能。
既然IO流是用于操作数据的,那么数据的最常见体现形式是:文件。
那么先以操作文件为主来演示。
需求:
在硬盘上,创建一个文件并写入一些文字数据。
找到一个专门用于操作文件的Writer子类对象FileWriter。
FileWriter extends OutputStreamWriter
用来写入字符文件的便捷类。此类的构造方法假定默认的字符编码和
默认字节缓冲区都是可接受的。要自己制定这些值,可以先在FileOutputStream
上构造一个OutputStreamWriter。
FileWriter用于写入字符流。要写入原始字节流,考虑使用FileOutputStream。
==============================================================
public class FileWriterDemo {
public static void main(String[] args) throws IOException {
/*
下面try catch finally有三个代码块,而关闭流操作需要访问FileWriter对象,那么需要
把建立引用放在异常处理的代码块之外,在try代码块中初始化,
否则放在try代码块中finally代码块无妨访问fw。
*/
FileWriter fw = null;
try {
/*
创建一个FileWriter对象,该对象一被初始化就必须要明确被操作的文件。
而且该文件会被创建到指定目录下,如果该目录下已有同名文件,将被覆盖。
这一步就是在明确数据要存放的目的地。
*/
fw = new FileWriter("demo.txt");
/*
调用write方法,将字符串写入到流中。
*/
fw.write("over the rainbow");
/*
刷新流对象中的缓冲中的数据。将数据刷到目的地中。
*/
fw.flush();
} catch (IOException e) {
throw new IOException("文件名错误或文件路径错误或内存溢出");
}
finally
{
/*
关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据,将数据刷到目的地中。
和flush的区别:
flush刷新后,流还可以继续使用。
close刷新后,流会关闭。
*/
try {
fw.close();
}catch(IOException e){
throw new IOException("关闭流失败");
}
}
}
}
============================================================
异常处理:
/*
下面try catch finally有三个代码块,而关闭流操作需要访问FileWriter对象,那么需要
把建立引用放在异常处理的代码块之外,在try代码块中初始化,
否则放在try代码块中finally代码块无妨访问fw。
*/
java.io.FileNotFoundException: k:\demo.txt (系统找不到指定的路径。)
Exception in thread "main" java.lang.NullPointerException
at cn.itcast.IO.FileWriterDemo2.main(FileWriterDemo2.java:33)
出现了文件找不到异常,表明了文件创建失败。则fw的指向为null。在finally中一定会执行语句fw.close();
但是却无法调用close,这时,为了提高代码的健壮性,需要对它进行判断.
==============================================================
/*
演示对已有文件的续写:
FileWriter的构造函数:
FileWriter(File file)
FileWriter(String fileName)
FileWriter(String fileName,boolean append)
根据给定的文件名以及提示是否附加写入数据的boolean值来构造FileWriter对象。
传递一个true参数,代表不覆盖已有的文件,并在已有的文件末尾处进行数据续写。
FileWriter fw = new FileWriter("demo.txt",true);
\n 换行符
\r 回车符
*/
==============================================================
package cn.itcast.IO;
/*
第二种方式:通过字符数组进行读取。
*/
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class FileReaderDemo2 {
public static void main(String[] args)
{
FileReader fr = null;
try {
fr = new FileReader("demo.txt");
/*
定义一个字符数组,用于存储读到的字符。
该read(char[] )返回的是读到字符个数。
*/
char[] buf = new char[1024];
int num = 0;
while((num = fr.read(buf))!=-1)
{
System.out.println(new String(buf,0,num));;
}
} catch (FileNotFoundException e) {
System.out.println(e.toString());
} catch (IOException e) {
System.out.println(e.toString());
} finally {
try {
fr.close();
} catch (IOException e) {
System.out.println(e.toString());
}
}
}
}
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
0 0
- 黑马程序员———IO(上)
- 黑马程序员——IO流(上)
- 黑马程序员—IO
- 黑马程序员——Java基础->IO流(上)
- 黑马程序员——JAVASE-IO流(上)
- 黑马程序员——Java中IO流上
- 黑马程序员——Java基础---IO(输入输出)(上)
- 黑马程序员——java基础---IO(上)
- 黑马程序员——Java之IO(上)
- 黑马程序员——IO
- 黑马程序员——IO
- 黑马程序员——IO
- 黑马程序员——IO
- 黑马程序员——IO
- 黑马程序员—IO操作
- 黑马程序员—io流
- 黑马程序员—IO技术
- 黑马程序员—IO流
- 使用TCP Keep-alive与TCP_USER_TIMEOUT机制判断通信对端是否存活
- 在VS2010单元测试中,Assert断言主要有那些功能?如何去编写代码测试?
- 第14周 按字母排序
- hdu1595 find the longest of the shortest (dijkstra+记录路径)
- 加密算法
- 黑马程序员———IO(上)
- pyvisa 1.4 & 1.6 -simple sample
- 个人博客到底要提供什么内容
- 解决引入taglib的时候,tomcat报taglib definition not consistent with specification version错误
- windows-python爬虫之scrapy快速安装
- 黑马程序员———IO(中)
- Java线程(六):JUC包阻塞队列的应用
- 第14周 杨辉三角
- 第三天 android体系结构