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

黑马程序员——JAVA基础之IO流FileReader,FileWriter

2014-11-30 21:48 639 查看
------- android培训、java培训、期待与您交流!
----------

IO(Input Output)流



IO流用来处理设备之间的数据传输

Java对数据的操作是通过流的方式

Java用于操作流的对象都在IO包中

流按操作数据分为两种:字节流与字符流。

流按流向分为:输入流,输出流。

IO流常用基类

字节流的抽象基类:InputStream ,OutputStream。

字符流的抽象基类: Reader ,Writer。

注:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。

• 如:InputStream的子类FileInputStream。

• 如:Reader的子类FileReader。

IO程序的书写

导入IO包中的类

进行IO异常处理

在finally中对流进行关闭

字符流——创建文件



创建流对象,建立数据存放文件 FileWriter fw = new FileWriter(“Test.txt”);



调用流对象的写入方法,将数据写入流 fw.write(“text”);



关闭流资源,并将流中的数据清空到文件中 fw.close();

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

public class IODemo
{
public static void main(String[] args)
{
FileWriter fw = null;

try
{
fw = new FileWriter("Test.txt");
fw.write("test");
}
catch (IOException e)
{
System.out.println(e.toString());
}
finally
{
if (fw != null)
try
{
fw.close();
}
catch (IOException e)
{
System.out.println(e.toString());
}
}
}
}


字符流——读取文件

建立一个流对象,将已存在的一个文件加载进流。 FileReader fr = new FileReader(“Test.txt”);

创建一个临时存放数据的数组 char[] ch = new char[1024];

调用流对象的读取方法将流中的数据读入到数组中 fr.read(ch);

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

public class IODemo
{
public static void main(String[] args)
{
FileReader fr = null;

try
{
fr = new FileReader("E:\\JAVA\\Demo\\Test.txt");
char[] buf = new char[1024];
int len = 0;
while ((len = fr.read(buf)) != -1)
{
System.out.println(new String(buf,0,len));
}
}
catch (IOException e)
{
System.out.println("read Exception:"+e.toString());
}
finally
{
if (fr != null)
{
try
{
fr.close();
}
catch (IOException e)
{
System.out.println("close Exception"+e.toString());
}
}
}
}
}


注意:

定义文件路径时,可以用“/”或者“\\”。

在创建一个文件时,如果目录下有同名文件将被覆盖。

在读取文件时,必须保证该文件已存在,否则出异常。

flush()和close()区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭。

FileWriter(): 后缀是父类名,前面是该流对象的功能

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

/**
*
* 需求:在硬盘上创建一个文件并写入一些数据
*
*/

public class IODemo
{
public static void main(String[] args) throws IOException
{
//创建一个FileWriter对象。该对象一被初始化就必须要明确被操作的文件。
//而且该文件会被创建到指定目录下。如果该目录下已有同名文件,将被覆盖。
//其实该步就是在明确数据要存放的目的地。
FileWriter fw = new FileWriter("FileWriter.txt");

//调用write方法,将字符串写入到流中。
fw.write("The code run!");

//刷新流对象中的缓冲中的数据。
//将数据刷到目的地中。
fw.flush();

//关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据。
//将数据刷到目的地中。
//和flush区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭。
fw.close();
}
}


通过实验发现,FileWriter() 会覆盖已有数据,要通过传递参数true来续写。

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

/**
*
* 需求:在硬盘上续写一些数据
*
*/

public class IODemo
{
public static void main(String[] args) throws IOException
{

FileWriter fw = new FileWriter("FileWriter.txt",true);

fw.write("The code run!");

fw.close();
}
}


FileReader读取的第一种方式:



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

/**
*
* FileReader演示:
*
*/
public class FileReaderDemo
{
public static void main(String[] args) throws IOException
{
//创建一个文件读取流对象,和指定名称的文件相关联。
//要保证该文件是已经存在的,如果不存在,会发生异常FileNotFoundException
FileReader fr = new FileReader("E:\\JAVA\\Demo\\FileWriter.txt");

int ch = 0;

//调用读取流对象的read方法。
//read():一次读一个字符。而且会自动往下读。
while ((ch = fr.read()) != -1)
{
System.out.println((char)ch);
}
fr.close();
}
}


第二种:

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

/**
*
* FileReader演示:
*
*/
public class FileReaderDemo
{
public static void main(String[] args) throws IOException
{

FileReader fr = new FileReader("E:\\JAVA\\Demo\\FileWriter.txt");

char[] buf = new char[1024];

int len = 0;

while ((len = fr.read(buf)) != -1)
{
System.out.println(new String(buf,0,len));
}
fr.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();
}

public static void copy()
{
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)
{
}
}
}
}


------- android培训、java培训、期待与您交流!
----------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐