java程序设计语言-输入输出及文件操作
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
public abstract void flush()throws 写缓冲区内的所有数据 IOException
字符文件流FileReader和FileWriter类
FileReader、FileWriter类用于字符文件的输入输出处理, 与文件数据流FileInputStream、FileOutputStream的功能 相似。
ByteArrayOutputStream除了重写父类OutputStream以 上的方法外,还自包含了以下四个方法:
public byte[] toByteArray():建立一个新的数组,将缓冲 区的数据复制到该数组中,并返回存放当前输出流内容的 数组。
public int size():返回缓冲区的大小。 public String toString():根据操作系统默认的编码格式,
Reader类常用方法
成员方法
主要功能
public abstract void close()throws IOException
关闭输入流, 并释放占用的所有资源
public void mark(int readlimit)throws IOException public boolean markSupported() public int read()throws IOException
过BufferedWriter流将数据写到目的地,例如: FileWriter fw=new FileWriter("java11.in"); BufferedWriter bw=new BufferedWriter(fw);
字符缓冲流BufferedReader类和BufferedWriter
类
} }百度文库
字符缓冲流BufferedReader类和BufferedWriter类
FileReader和FileWriter类以字符为单位进行输入输出,无法进行整 行输入与输出,数据的传输效率很低。Java提供BufferedReader和 BufferedWriter类以缓冲区方式进行输入输出,其构造方法如下: public BufferedReader(Reader in) public BufferedReader(Reader in,int sz) public BufferedWriter(Writer out) public BufferedWriter(Writer out,int sz)
public boolean ready()throws IOException
测试输入流是否准备完成等待读取
Writer类常用方法
成员方法
主要功能
public abstract void close()throws IOException
关闭输出流,并释放占用的所有资源
public void write(int c) throws IOException
ByteArrayInputStream类
ByteArrayInputStream可从字节数组中读取 数据,它重写了其父类InputStream的部分方 法,如:
public int read(); public int read(byte b[],int off,int len); public long skip(long n) public int available(); public boolean markSupported(); public void mark(int tag); public void reset(); public void close() throws IOException
BufferedReader流能够读取文本行,方法是readLine()。 通过向BufferedReader传递一个Reader对象或者Reader子类对象来
创建一个BufferedReader对象,如: BufferedReader br=BufferedReader(new
FileReader("java11.txt")); 然后再从流br中读取java11.txt中的内容。 类似的,可以将BufferedWriter流与FileWriter流连接起来,然后通
类ByteArrayInputStream有两个构造方法:
public ByteArrayInputStream(byte b[])
public ByteArrayInputStream(byte b[],int off,int len)
第一个构造方法以一个字节数组作为参数, 数据源完全复 制到内部缓冲区。第二个构造方法的参数包括一个字节数 组、一个整型偏移量和一个整型长度,与第一个构造方法 不同的是,此构造方法生成的内部缓冲区将以指定偏移量 位置为起始位置,并且能读取的最大数据长度为指定的长 度。这个字节数组就是该输入流的数据源。内存缓冲区保 持一个标记,指向当前字节。
将内部缓冲区的数据转换为一个字符串返回。 public String toString(String enc):根据编码格式enc,
将内部缓冲区的数据转换为一个字符返回。
字符流抽象类:Reader类和Writer类
用户程序有时需要读取其他格式的数据,如 Unicode格式的文字内容,Java提供了相应的输入 输出流:字符流。可直接将字符数据写入文件,或 从文件中直接读出字符。(Java中字符是Unicode, 所以一个字符是两个字节。)
FileReader从超类中继承了read、close等方法,FileWriter 从超类中继承了write、close等方法。
下面是一段创建FileReader对象的代码,可以使用该对象读 取名为java11.txt的文件。
FileReader in=new FileReader("java11.txt");
•然后使用BufferedReader类的成员方法write(String s int off,int len)把字符串s写到java11.in中,参数off是字符串s开 始处的偏移量,len是写入的字符长度。 上例中文件按字符一个一个的读取,效率比较低,现在应用
BufferedWriter类来优化它,每次读取若干个字符。
在输入流当前位置加上标记
测试输入流是否支持标记 (mark) 从输入流中读取一个字符
public int read(char c [])throws IOException
public abstract int read(char c[],int offset,int len) throws IOException
第一个构造方法没有参数,生成的内部缓冲区的默 认大小为32个字节。第二个构造方法有一个整型 参数,指定生成的内部缓冲区的初始大小,内部缓 冲区大小将随数据的写入自动更改。
ByteArrayOutputStream类
ByteArrayOutputStream可向字节数组写入数据,它重写 了其父类OutputStream的方法,如:
字符流提供了处理字符的输入/输出的方法,包括两 个抽象类Reader和Writer。字符流Reader指字符 流的输入流,用于输入,而Writer指字符流的输出 流,用于输出。
Reader和Writer使用的是Unicode,可以对不同格 式的流进行操作。从Reader和Writer派生出的子类 的对象都能对Unicode字符流进行操作,由这些对 象来实现与外设的连接。
其构造方法如下: public FileReader(File file) throws FileNotFoundException public FileReader(String filename) throws FileNotFoundException public FileWriter(File file) throws IOException public FileWriter(String fileName,boolean append)throws IOException
写一个字符
public void write (char cbuf[])throws IOException
写一个字符数组
public abstract void write (char cbuf[],int offset,int len) throws IOException
将字符数组cbuf中从offset 位置开始的 len个字符写到输出流中
ByteArrayOutputStream类
与ByteArrayInputStream对应, ByteArrayOutputStream对象中同样有一个字节 数组类型的属性,作为内部缓冲区,同时也是该输 出流的接收端。
类ByteArrayOutputStream有两个构造方法: public ByteArrayOutputStream() public ByteArrayOutputStream(int len )
public void write(int b); public void write(byte b[],int off,int len); public void wtiteTo(OutputStream out) throws
IOException; public void reset(); public void close() throws IOException;
import java.io.*; public class Ex11_6{
public static void main(String args[]){ FileReader fr; BufferedReader br; int ch; try{ fr=new FileReader("c:\\Ex11_6.java"); br=new BufferedReader(fr); while((ch=br.read())!=-1){ System.out.print((char)ch);} }catch(Exception e){ e.printStackTrace();}
字符文件流FileReader和FileWriter类
例 用FileReader一个字符一个字符地读取整个文件。
import java.io.*; public class Ex11_5{
public static void main(String args[]){ FileReader fr; int ch; try { fr=new FileReader("c:\\Ex11_5.java"); while((ch=fr.read())!=-1){ System.out.print((char)ch); } }catch(Exception e){ e.printStackTrace(); }
public void write(String str) throws IOException
写一个字符串
public void write (String str,int 将字符串从offset位置开始,长度为len个 offset,int len)throws IOException 字符数组的数据写到输出流中
public void reset()throws IOException
将输入的数据存放在指定的字符数组
从输入流中的offset位置开始读取len 个字符,并存放在指定的数组中 将读取位置移至输入流标记之处
public long skip(long n) throws IOException
从输入流中跳过n个字节
第7章 输入输出及文件操作
InputStream/OutputStream和Reader/Writer都直接继承自Java的 根类Object,它们各自形成一个独立的继承体系。
字节流 字符流
内存的读写
在java.io中,还提供了ByteArrayInputStream和 ByteArrayOutputStream类来直接访问内存,它们分别 是InputStream和OutputStream的子类。