Java IO流

Java IO流知识:

1、输入输出\输出流原理


2、输入、输出流的分类:


3、节点流和处理流


简答介绍4个抽象类:

抽象类InputStream:



例子:(TestFileInputStream.java)

package com.zhj.www;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class TestFileInputStream {
	public static void main(String[] args) {
		FileInputStream inputStream  = null;
		int b = 0;
		try {
			inputStream = new FileInputStream("E:\\JavaCode\\eclipse-workspace\\TestFileInputStream\\src\\com\\zhj\\www\\TestFileInputStream.java");//"\\"路径分隔符
		} catch (FileNotFoundException e) {
			System.out.println("找不到");
			System.exit(-1);
		}
		try {
			long num = 0;
			while ((b = inputStream.read()) != -1) {//表示文件还没读到结尾
				System.out.println((char)b);
				num++;
				
			}
			inputStream.close();
			System.out.println();
			System.out.println("共读到字节:"+num);
		} catch (IOException e1) {
			System.out.println("文件读取错误");
			System.exit(-1);	
		}
	}
}//读取文件字节数

运行结果:
        共读到字节:xxx

抽象类:OutputStream

改错:由程序中输出数据。

通过管道,从程序中向文件里写东西。


简单图像化理解:


例子:(TestFileOutStream.java)

package com.zhj.www;
import java.io.*;
public class TestFileOutStream {
	public static void main(String[] args) {
		int b = 0;
		FileOutputStream out = null;//输出管道
		FileInputStream in =null;//输入管道
		try {
			in= new FileInputStream("E:\\JavaCode\\eclipse-workspace\\TestFileOutStream\\src\\com\\zhj\\www\\TestFileOutStream.java");//插在一个文件
			out = new FileOutputStream("E:\\JavaCode\\eclipse-workspace\\TestFileOutStream\\src\\com\\zhj\\www\\HelloWorld.java");//插在一个文件
			while((b= in.read()) != -1) {//当read到文件结尾时会返回-1
				out.write(b);//
			}
			in.close();//关闭文件
			out.close();
		} catch (FileNotFoundException e2) {
			System.out.println("找不到指定文件");
			System.exit(-1);
		}catch (IOException e1) {
			System.out.println("文件复制错误");
			System.exit(-1);
		}
		System.out.println("文件已经复制");
	}
}

运行结果:
            文件已经复制

抽象类 Reader:




例子:

package com.zhj.www;

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

public class TestFileReader {
	public static void main(String[] args) {
		FileReader fReader =null;
		try {
			fReader = new FileReader("E:\\JavaCode\\eclipse-workspace\\TestFileReader\\src\\com\\zhj\\www\\TestFileReader.java");
			int c =0;
			while((c = fReader.read()) != -1) {
				System.out.println((char)c);
			}
		} catch (FileNotFoundException e) {
			System.out.println("没有找到指定文件");
		} catch (IOException e) {
			System.out.println("文件读取错误");
		}
	}
}
运行结果:

           

运行完美无瑕,不会出现“?",因为是一个字符外写。

抽象类Writer:


例子:

package com.zhj.www;

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

public class TestFileWriter {
	public static void main(String[] args) {
		FileWriter fileWriter = null; //创建一个FileWriter
		try {
			fileWriter = new FileWriter("E:\\JavaCode\\eclipse-workspace\\TestFileWriter\\src"
					+ "\\com\\zhj\\www\\Hello.dat");//往文件里写入,当文件不存在,会自动创建,但是必须指定目录
			for (int c =0; c<=50000;c++) {
				fileWriter.write(c);//把c写入filWriter文件中
			}
			fileWriter.close();
		} catch (IOException e) {
			e.printStackTrace();//printStackTrace()方法的意思是:在命令行打印异常信息在程序中出错的位置及原因。
			System.out.println("文件写入错误");
			System.exit(-1);
		}
	}
}

不再给出运行结果。

练习:

    通过一个FileReader和FilWriter类实现从一个文件复制到另一个文件。

package com.zhj.www;

import java.io.*;

public class TestFileWriterAndReader {
	public static void main(String[] args) {
		
		FileReader fileReader = null;
		FileWriter fileWriter = null;
		try {
			int c =0;
			fileReader = new FileReader("E:\\JavaCode\\eclipse-workspace\\TestFilWriterAndReader"
					+ "\\src\\com\\zhj\\www\\TestFileWriterAndReader.java");//文件一定要存在,否则会执行异常
			fileWriter = new FileWriter("E:\\JavaCode\\eclipse-workspace\\TestFilWriterAndReader"
					+ "\\src\\com\\zhj\\www\\Hello.java");//文件不存在会自动创建
			while((c = fileReader.read()) != -1) {
				fileWriter.write(c);
			}
			fileReader.close();
			fileWriter.close();
		} catch (FileNotFoundException e) {
			System.out.println("没有找到指定文件");
			System.exit(-1);
		}catch (IOException e) {
			System.out.println("文件读取错误");
			System.exit(-1);
		}
		System.out.println("文件已经复制");
	}
}






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值