Java中通过输入输出流进行文件的读写

时间:2021-12-20 23:37:42

流是一个很形象的概念,当程序需要读取数据时就会开启一个通向数据源的数据流,这个数据源可以是文件,内存或者是网络连接。类似的,当程序需要写入文件时,就会开启一个通向目的地的流。这里的数据源和目的地都可以通过File类中构造函数的参数进行赋值。

Java流的分类

按流向分:
输入流: 程序可以从中读取数据的流。
输出流: 程序能向其中写入数据的流。
按数据传输单位分:
字节流: 以字节为单位传输数据的流
字符流: 以字符为单位传输数据的流
按功能分:
节点流: 用于直接操作目标设备的流
过滤流: 是对一个已存在的流的链接和封装,通过对数据进行处理为程序提供功能强大、灵活的读写功能。

 

java.io常用类

JDK所提供的所有流类位于java.io包中,都分别继承自以下四种抽象流类。
InputStream:继承自InputStream的流都是用于向程序中输入数据的,且数据单位都是字节(8位)。
OutputStream:继承自OutputStream的流都是程序用于向外输出数据的,且数据单位都是字节(8位)。
Reader:继承自Reader的流都是用于向程序中输入数据的,且数据单位都是字符(16位)。
Writer:继承自Writer的流都是程序用于向外输出数据的,且数据单位都是字符(16位)。
 此文简单实现了Java I/O中的对File(文件的处理),File类是独立于系统平台的,利用其构造函数创建出相应的File对象;再调用其中的方法实现对文件各个属性方面的操作。
构造函数:
File( String  path)
File(String path, String FileName)
File(File dir, String name)
File 类提供了一种与机器无关的方式来描述一个文件对象的属性,通过类File所提供的方法可以得到文件或目录的描述信息,这主要包括名称、所在路经、可读性、可写性、文件的长度等,还可以生成新的目录、改变文件名、删除文件、列出一个目录中的所有文件的操作。
以下是对文件进行读出和写入的简单实现:
package com.czj_IO;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class TestIO {

	/**
	 * 读文件的方法
	 * @param fName文件绝对路径
	 */
	public void readFile(String fName){
		try {
			FileInputStream  fis = new FileInputStream(fName);
			int n=fis.read();//读取下一个字节
			//循环读写
			while(n!=-1){
				System.out.println("读到的字节是"+n);
			    n = fis.read();
			}
			fis.close();//关闭输入流
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	/**
	 * 写文件的方法
	 * @param msg写入的内容
	 * @param s文件绝对路径
	 * @throws Exception抛出异常
	 */
	public void writeFile(String msg,String s) throws Exception{
		try {
			FileOutputStream fos = new FileOutputStream(s,false);
			byte[] b = msg.getBytes();//得到组成字符串的字节
			fos.write(b);
			fos.close();//关闭输出流 
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		TestIO tjm = new TestIO();
		tjm.readFile("E://类与对象总结.txt");
		try {//此语句运行两次必须改写入文件的文件名或删除上次写入的文件,否则报错(已有该文件)
			tjm.writeFile("hello! 你好!~~~~", "E://写入的文件1.txt");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}
 
                                                                                                                                    梣梓cenzi
                                                                                                                                   2015-05-04