Java--IO

来源:互联网 发布:凌鹏软件 编辑:程序博客网 时间:2024/06/17 03:01

流之间的桥梁:

InputStreamReader: 字节流到字符流的桥梁  解码

OutputStreamWriter:字符到字节的桥梁,编码


流的操作规律

要想知道开发时用哪些对象,只要通过四个明确即可

1.明确源和目的

       源  InputStream Reader

       目的 OutputStream Writer

2.明确数据是否为纯文本

       源 

            是纯文本 Reader

            否 InputStream

       目的:

            是 Writer

            否 OutputStream


3.明确具体的设备

源设备: 

        硬盘:File  

        键盘:System.in

        内存:数组

        网络:Socket流

目的设备: 

        硬盘:File

控制台:System.out

内存:数组

网络:

Socket流


4.是否需要额外其他功能:

1.是否需要高效(缓冲区)

    是:buffer



文件的拷贝:

import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.Reader;import java.io.Writer;public class CopyFile {public static void main(String[] args) throws IOException {try {Reader r=new FileReader("e:\\demo2.txt");Writer w=new FileWriter("F:\\demo.txt");int x=0;while((x=r.read())!=-1)  //无参的read方法返回的是该字符的编码  a返回的是97{w.write(x);          //写入单个字符}r.close();w.close();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}


方式二:

import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.Reader;import java.io.Writer;public class CopyFile2 {public static void main(String[] args) throws IOException {try {Reader r=new FileReader("e:\\demo2.txt");Writer w=new FileWriter("F:\\demo2.txt");int length=0;int i=0;char[] ch=new char[5];while((length=r.read(ch))!=-1) //每一次read 把char[5]装满 同时判断有没有read完,没read完返回读的字符数,这里是5{w.write(ch, 0, length);    //把char[5]的第0个元素到第lengh-1个元素写入}r.close();w.close();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

方式三:

使用BufferedReader和BufferedWriter

import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.Reader;import java.io.Writer;public class BufferWriter {public static void main(String[] args) throws IOException {try {Reader r=new FileReader("e:\\demo2.txt");Writer w=new FileWriter("F:\\demo3.txt");BufferedReader br=new BufferedReader(r);BufferedWriter bw=new BufferedWriter(w);int ch=0;while((ch=br.read())!=-1){bw.write(ch);}br.close();bw.close();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}


方式四:

使用字符流和字节流的转换

import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.io.Reader;import java.io.Writer;public class Readkey {public static void main(String[] args) throws IOException {InputStream in=new FileInputStream("e:\\demo2.txt");OutputStream out=new FileOutputStream("F:\\demo5.txt") ;BufferedReader br=new BufferedReader(new InputStreamReader(in));//InputStreamReader把输入字节流转换成输入字符流BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(out));String line=null;while((line=br.readLine())!=null){bw.write(line);bw.newLine();}br.close();bw.close();}}


在控制台 写入输入 输出到文本文件里:

import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileOutputStream;import java.io.FileWriter;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.io.Writer;public class SystemInToTxt {public static void main(String[] args) throws IOException {InputStream in=System.in;Writer w=new FileWriter("E:\\xieru.txt");BufferedReader br=new BufferedReader(new InputStreamReader(in));BufferedWriter bw=new BufferedWriter(w);String line=null;while ((line=br.readLine())!=null) {if("over".equals(line))break;bw.write(line);bw.newLine();}br.close();bw.flush();bw.close();}}