标签:
------ <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.comtarget="blank">
java培训</a>、期待与您交流! ---------
IO流用来处理设备之间的数据传输
java对数据的操作是通过流的方式
java 用于操作流的对象都在IO包中
流按操作数据分为两种,字节流与字符流,
流按流向分为:输入流, 输出流
将外设中的数据读取到内存中:输入。
将内存的数写入到外设中:输出。
import java.io.FileWriter;
public class IoDemos {
public static void main(String[] args) throws Exception
{
med();
}
private static void med() throws Exception
{
//创建一个FileWriter对象,该对象一被初始化就必须要明确被操作的文件,
//而且该文件会被创建到指定目录下,如果该目录下已有同名文件,将被覆盖
//实际上就是明确数据要存放的目的地
FileWriter fw = new FileWriter("E:\\java.txt");
//调用方法将字符串写入到流中
fw.write("ssasdwa");
//刷新流对象中的缓冲中的数据,将数据刷到目的地中去
fw.flush();
//关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据,将数据刷到目的地中
fw.close();
}
程序运行后,后在E盘目录下创建一个名为java的txt文档
}
是:flush刷新后,流可以继续使用,close刷新后,会关闭流
----------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
private static void med1() {
try
{
FileWriter fw = new FileWriter("E:\\java.txt",true);
fw.write("4578954");
fw.flush();
}
catch(IOException e)
{
System.out.println(e.toString());
}
finally
{
try
{
if(fw!=null)
fw.close();
}
catch(IOException e)
{
System.out.println(e.toString());
}
}
}
这样创建是 错误的,因为fw是局部变量,不可以在try以外使用,所以可以改写成在外建立引用,在内部初使化
----------------------------------------------------------------------------------------------------------------
运行程序会发生异常:
----------------------------------------------------------------------------------------------------------------
那么改写程序:
private static void med1() {
// TODO Auto-generated method stub
FileWriter fw = null;
try
{
fw = new FileWriter("E:\\java.txt",true);
fw.write("4578954");
fw.flush();
}
catch(IOException e)
{
System.out.println(e.toString());
}
finally
{
try
{
if(fw!=null)
fw.close();
}
catch(IOException e)
{
System.out.println(e.toString());
}
}
}
运行程序,程序会正常运行
注: 为防止异常运行时程序无法关闭,因此关闭流应该在finally中运行
----------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------
将E盘中的文件IoDemoes.java拷贝一个复件到当前目录下
<1>缓冲区出现提高了对数据的读写效率
<2> 对应类: BufferedWriter
BufferedReader
<3> 缓冲区结合流才可以使用
<4>在流的基础上,对流的功能进行了增强
private static void med6() throws Exception
{
//创建一个字符定稿流对象
FileWriter fw = new FileWriter("E:\\BufferDemos.txt");
//为了提高字符写入流效率,加入缓冲技术
BufferedWriter bufw = new BufferedWriter(fw);
bufw.write("dddddd");
bufw.flush();
fw.close();
bufw.close();
}
运行程序后会得到
注:使用到缓冲区,就必须刷新
缓冲区中的换行方法 newLine() 具有跨平台的换行符
要读取的文件为 BufferDemos.txt
设计程序代码
private static void med7() throws Exception
{
// 创建一个读取流对象与文件相关联
FileReader fr = new FileReader("E:\\BufferDemos.txt");
//加入缓冲技术
BufferedReader burd= new BufferedReader(fr);
String num = null;
//该缓冲区提供了一个一次读一行的方法readLine 方便于对文本数据的获取
//当返回null时,表示读到了文件末尾
while((num=burd.readLine())!=null)
{
String s = burd.readLine();
System.out.println(s);
}
burd.close();
}
注: //该缓冲区提供了一个一次读一行的方法readLine 方便于对文本数据的获取
//当返回null时,表示读到了文件末尾
------------------------------------------------------------------------------------------------------------------------------------
private static void med8() {
//
BufferedWriter bufw = null;
BufferedReader bufr = null;
FileReader fr = null;
FileWriter fw = null;
try
{
fr = new FileReader("E:\\BufferDemos.txt");
bufr = new BufferedReader(fr);
fw = new FileWriter("E:\\myjava.txt");
bufw = new BufferedWriter(fw);
String num = null;
char[] arr=new char[1024];
while((num=bufr.readLine())!=null)
{
bufw.write(num);
bufw.newLine();
}
}catch(Exception e)
{
System.out.println(e.toString());
}
finally
{
try
{
if(bufr!=null)
bufr.close();
}
catch(Exception e)
{
System.out.println(e.toString());
}
try
{
if(bufw!=null)
bufw.close();
}
catch(Exception e)
{
System.out.println(e.toString());
}
}
}
------------------------------------------------------------------------------------------------------------------------------------
自定义一个读出一行数据的方法
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
class MyBufferedReader
{
private FileReader fil;
MyBufferedReader(FileReader fil)
{
this.fil = fil;
}
//提供一个可以一次读一行的方法
public String myReadLine() throws Exception
{
//定义一个临时容器,原BufferReader封装的是字符数组
//这里可以使用一个StringBuilder容器
StringBuilder sb = new StringBuilder();
int ch = 0;
while((ch=fil.read())!=-1)
{
if(ch==‘\r‘)
continue;
if(ch==‘\n‘)
return sb.toString();
else
sb.append((char)ch);
}
if(sb.length()!=0)
{
return sb.toString();
}
return null;
}
}
建立一个测试类
public class IoDemos {
public static void main(String[] args) throws Exception
{
med10();
}
private static void med10() throws Exception
{
FileReader fr = new FileReader("E:\\BufferDemos.txt");
MyBufferedReader my = new MyBufferedReader(fr);
System.out.println(my.myReadLine());
System.out.println(my.myReadLine());
}
import java.io.FileReader;
import java.io.LineNumberReader;
public class LineNumberReaderDemos {
public static void main(String[] args) {
med1();
}
private static void med1() {
FileReader fr;
LineNumberReader lnr ;
try{
fr = new FileReader("E:\\IoDemos.java");
lnr = new LineNumberReader(fr);
String line = null;
lnr.setLineNumber(100);
while((line = lnr.readLine())!=null)
{
System.out.println(lnr.getLineNumber()+" "+line);
}
lnr.close();
}catch(Exception e)
{
System.out.println(e.toString());
}
}
}
标签:
原文地址:http://blog.csdn.net/zl18603543572/article/details/46403137