您的位置:首页 > 职场人生

黑马程序员-------IO流(字符流)

2014-03-25 21:31 351 查看
----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

1.
IO流的概述

IO数据流使用来处理设备之间的数据的传输的。。Java是通过流的方式对数据进行操作的

Java把流封装成类存在IO包中

流的分类:
流按操作数据分为:字节流和字符流
按流向分为:输入流 和 输出流

字符流FileWriter
package day18;

import java.io.FileWriter;
import java.io.IOException;
/**
* 字符流
* @author hao
*
*字符流的基类
*Reader Writer
*
*字符流在操作文本文件的时候经常用到
*
*练习的需求:
*在硬盘上创建一个hao.txt 并在其中写入数据
*
*在API中找到专门操作文本的的Writer的子类 它的子类一般具有后缀是父类 前缀为此类的功能
*/
public class FileWriterDemo {
public static void main(String[] args) {

//创建流的引用
FileWriter fw = null;
try{
//初始化流, 当初始化是必须要明确写入的文件
// 当写入的文件同名的话 会将其覆盖
fw = new FileWriter("hao.txt");
//向文件中写入数据
fw.write("haoha");

//刷新流,将数据写入文本
// fw.flush();

}catch(Exception e)
{
e.printStackTrace();
}finally
{
try {
//如果不判断 fw为null 的话 有可能会出现空指针异常
if(!(fw==null))
//刷新并关闭 字符流
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/*
* flush() 与 close() 的区别
* flush() 刷新后,流可以继续在使用
* close() 刷新后,将流关闭 不能再使用
* */


文件的续写
package day18;

import java.io.FileWriter;
import java.io.IOException;

/**
* 文件的续写
* @author hao
*
*所用的方法为
*
*FileWriter(String fileName, boolean append)
*当append 的值,如果为 true,则将数据写入文件末尾处,而不是写入文件开始处。
*
*/
public class FileWriterDemo2 {

public static void main(String[] args) {

FileWriter fw = null;
try {
//true 表示不覆盖原有的文件,在文本的末尾续写
fw = new FileWriter("hao.txt",true);
//续写的内容
// \r\n 为windows的换行符
fw.write("\r\nheima");

} catch (Exception e) {
e.printStackTrace();
}finally
{
if(!(fw==null))
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

FileReader
文件的两种读数据的方式
第一种方式:
package day18;

import java.io.FileReader;
import java.io.IOException;

/**
* 文本读取的第一种方法
* @author hao
*
*采用的方法:
* int read()
* 读取单个字符。
*/
public class FileReaderDemo {

public static void main(String[] args)
{
//创建一个读取文件流的引用
FileReader fr = null;
try {
//和指定的文件相关联
fr = new FileReader("hao.txt");

//调用读取流的方法 read()方法 循环将文件的内容读出
int ch = 0;
while((ch=fr.read())!=-1)
{
System.out.print((char)ch);
}

// System.out.println("读取的字符:"+(char)fr.read());

} catch (Exception e) {
e.printStackTrace();
}finally
{
if(!(fr==null))
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

第二种方式:
package day18;

import java.io.FileReader;

/**
* 读取文件的第二种方法
* @author hao
*
*运用的方法:
* int read(char[] )
将字符读入数组的某一部分。
*/
public class FlieReaderDemo2 {

public static void main(String[] args) {
//定义读取流一个引用
FileReader fr = null;
try
{
//读取流与文件想关联
f
4000
r = new FileReader("hao.txt");
//定义一个数组 用于存储读取的字符
//read(char[]) 返回值为所读取的个数
char[] ch =new char[1024];
int num = 0 ;

while((num = fr.read(ch))!=-1){

System.out.println(new String(ch,0,num));
}

}catch(Exception e)
{
e.printStackTrace();
}
}
}

文件复制的练习
package day18;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/**
* 文件的复制
* @author hao
*
*步骤:
*1.创建一个文件 用于存储要复制文件的数据
*2.创建读取流 并与相应的文件想关联
*3.连续读写,完成数据的存储
*4.关闭资源
*
*/
public class CopyFileDemo {
public static void main(String[] args) {
//创建读写流 并与相应的文件想关联
FileWriter fw = null;
FileReader fr = null;

try {
fw = new FileWriter("copy_hao.txt");
fr = new FileReader("hao.txt");

char[] ch = new char[1024];
int num = 0 ;
//循环读写数据 完成文件的复制
while((num = fr.read(ch))!=-1)
{
fw.write(ch, 0, num);
fw.flush();
}

} catch (IOException e) {

throw new RuntimeException("读写错误");
}finally
//关闭资源
{
if(!(fr == null))
try {
fr.close();
} catch (IOException e) {
throw new RuntimeException("Reader流关闭错误");
}
if(!(fw==null))
try {
fw.close();
} catch (IOException e) {
throw new RuntimeException("Writer流关闭错误");
}
}
}
}

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息