io流(input output)

IO流(数据流)

用来处理设备之间的数据传输,Java对数据的操作(硬盘上的文件,内存中的数据)是通过流的方式
Java用于操作流的对象都在IO包中

  流按流向分为:输入流,输出流。

  流按操作数据分为两种:字节流与字符流

 通用:字节流(数据(mp3,mp4等媒体视频音频,图片)都是字节,也就是二进制

      ASCII外国人弄的识别英文字母)

      我们国家也弄了一个对应中文的表:GBK2312表

      国际标准(UNICODE码表(无论什么字符都用16个字节表示),

      再进行优化后UTF-8码表(两个相同字母时里面的编码就会优化)

  基于字节流产生字符流(内部糅合编码表):对于读取的数据,查哪个表可以由我们来指定

  (处理文字就会变得很方便)

字节流的抽象基类:Input Stream ,Output Stream。

字符流的抽象基类:Reader , Writer。

由这四个类派生出来的子类名称都是

以其父类名作为子类名的后缀。

如:Input Stream的子类File Input Stream。

如:Reader的子类File Reader。前缀名是该流对象的功能

字符流-读取文件

建立一个流对象,将已存在的一个文件加载进流。

File Reader fr = new File Reader(“Test.txt”);

创建一个临时存放数据的数组。

char[] ch = new char[1024];

调用流对象的读取方法将流中的数据读入到数组中。

fr.read(ch);

注:定义文件路径时,可以用“/”或者“\\”。

在创建一个文件时,如果目录下有同名文件将被覆盖。

在读取文件时,必须保证该文件已存在!!否则出异常。

	/*writer写*/
//创建一个FileWriter对象,该对象一被初始化就必须明确被操作的文件
//new的文件会被创建到指定目录下,如果该目录下已有同名文件,将被覆盖.
//该步就是明确数据存放的目的地(要写字得有纸,起到纸的作用)
	FileWriter fw = null;//外面建立引用
		try {
			//里面进行初始化    传递一个true参数,代表不覆盖已有文件,并在已有文件末尾处进行数据续写
			fw = new FileWriter("D:\\aio\\demo.txt",true);
	//调用write方法,将字符串写入流中,但目前文件中是没有的哦!!
			fw.write("hahahha");//写很多到硬盘没空间了,所以有可能有异常
	//刷新流对象中的缓冲中的数据,将数据弄到目的地中,流可以继续使用.
			fw.flush();//用几次都无所谓,重点是最后要调用close();
			//fw.write("3829399dikdjdl");
			//fw.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}//抛出异常
		finally {
			//关闭流资源,但是关闭前会刷新一次内部的缓冲中的数据,将数据弄到目的地中.
			//close刷新后,会将流关闭.
			try {
				if(fw != null) {//为空时,是没法关闭的,所以要判断一下
					fw.close();//如果写了5个或更多流,要分别关闭,不能&& 或||写
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			//java是调用系统中的资源来进行读写操作,它本身是不能进行这种操作的,
			//所以用完了要把系统的资源给关闭,释放出来
		}

  

/*读Reader*/	throws IOException
	//先创建一个文件读取流对象,和要读的文件名称相关联
	//要保证该文件已经存在,若不存在,会报FileNotFoundException
	FileReader fr = new FileReader("D:\\aio\\demo.txt");
	//调用读取流对象的read方法,
	//read(); :一次读一个字节,并且会自动往下读,返回一个int型的数字
	//int ch = 0;
	//while((ch = fr.read()) != -1 ) {
	//	System.out.println((char)ch);//转换成我们认识的字母
	//}

	/*while(true) {
		int ch = fr.read();
		if(ch == -1) {
			break;
		}System.out.println((char)ch);
	}
	*/
	//通过字符数组进行读取
	//定义一个字符数组read(char[]),用于存储读到的字符,返回读到的字符个数
	char[] buf = new char[1024];//定义为1024(2k)的整数倍的数组长度
	int num = 0;
	while((num = fr.read(buf)) != -1) {
			//把数组打印变成字符串打印一下,从什么位置开始,取几个
		System.out.print(new String(buf,0,num));
	}

	//int num = fr.read(buf);//读一个,存数组里一个
	fr.close();

  

package io;
import java.io.*;
public class lOtext {
/*把复制文件到另一个地方  */
public static void main(String[] args) {

	copy_2();
	}
//用这个
public static void copy_2() {
	FileWriter fw =null;
	FileReader fr = null;
	try {
		fw = new FileWriter("D:\\aio\\demo_copy.txt");
		fr = new FileReader("D:\\aio\\demo.txt");
		char[] buf = new char[1024];
		int len = 0;
		while((len=fr.read(buf)) != -1) {
			fw.write(buf,0,len);}

	}catch(IOException e){
		throw new RuntimeException("读写失败");
	}finally {
		if(fr!= null) {
			try {
				fr.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			}
		if(fw != null) {
			try {
				fw.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			}
	}
}
//读一个字符,存一个字符的方法
public static void copy_1() throws IOException {
	//创建目的地
	FileWriter fw = new FileWriter("D:\\aio\\demo_copy.txt");
	//与已有文件关联
	FileReader fr = new FileReader("D:\\aio\\demo.txt");
	int ch = 0;
	while((ch=fr.read()) != -1) {
		fw.write(ch);
	}
	fr.close();
	fw.close();
	}
}

  上面的文件复制思路图解

原文地址:https://www.cnblogs.com/ziyanxiaozhu/p/8371256.html

时间: 2024-08-30 01:38:22

io流(input output)的相关文章

IO(Input Output)流___字符流、字节流

一.IO流简述------用于操作数据的 IO流用来处理设备之间的数据传输; Java对数据的操作是通过流的方式; Java用于操作流的对象都是在IO包中; 流按操作数据分为: 字节流(通用)和字符流: 按流向分为: 输入流和输出流. 字节流的抽象基类: InputStream , OutputStream 字符流的抽象基类: Reader, Writer 注: 由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀. 如: InputStream的子类FileInputStream :Re

Java IO(input output)流<一>

一.IO流概述 1.IO流是用来在设备之间的数据传输. 2.Java中对数据的操作是按流的方式进行的. 3.分类: 1)按操作的数据:字节流(早期就有,可传送任何数据)和字符流(ASCII码表,Unicode码表<两字节>). 2)按流向:输入流和输出流. 4.抽象基类 1)字节流:InputStream,OutputStream 2)字符流:Reader,Writer 二.IO流实例 1.FileWriter类实例 1 //新建一个Filewriterdemo类 2 import java.

Java IO(input output)流&lt;二&gt;

一.字符流的缓冲区 1.什么是缓冲区       缓冲区又称为缓存,它是内存空间的一部分.也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据, 这部分预留的空间就叫做缓冲区.缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区. 2.为什么要引入缓冲区 缓冲区就是一块内存区,它用在输入输出设备和CPU之间,用来缓存数据.它使得低速的输入输出设备和高速的CPU能够协调工作,避免低 速的输入输出设备占用CPU,解放出CPU,使其能够高效率工作. 3.字符

Java之IO流详解

IO流 Input/Output 完成输入/输出 应用程序运行时——数据在内存中  ←→ 把数据写入硬盘(磁带)  内存中的数据不可持久保存的  输入:从外部存储器(硬盘.磁带.U盘)把数据读入内存. 输出:从内存中把数据写入外部存储区(硬盘.磁带.U盘)中,这样就可以保证:即使程序退出了,数据依然不会丢失. File — 代表磁盘上的文件或目录. ●  listRoots() :列出磁盘上所有的根目录 ● exists:判断是否存在 ● mkdir:创建目录 ● listFiles():列出当

IO流概念及分类

package jinjieshilie; import java.io.FileReader;import java.io.IOException;public class zifuliu { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub //read input 是输入流 write output 是输出流 //read write 是字符流 inp

Java实现文件写入——IO流(输入输出流详解)

输入输出的重要性:     输入和输出功能是Java对程序处理数据能力的提高,Java以流的形式处理数据.流是一组有序的数据序列,根据操作的类型,分为输入流和输出流. 程序从输入流读取数据,向输出流写入数据.Java是面向对象的程序语言,每一个数据流都是一个对象,它们提供了各种支持“读入”与“写入”操作的流类. Java的输入输出功能来自java.io 包中的InputStream类.OutputStream类.Reader类和Writer类以及继承它们的各种子类. (一)解析文件处理的奥秘 1

黑马程序员——java基础---IO(input output)流字符流

黑马程序员——java基础---IO(input output)流字符流 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- io(input output)流特点: 1,io流用来处理数据之间的传输 2,java对数据的操作是通过流的方式: 3,java用于操作流的对象都在io包中: 4,流按操作数据分为两种:字节流和字符流: 5,流按流向分为:输入流和输出流. 注意:流只能操作数据,而不能操作文件. 3.IO流的常用基类: 1)字节流的抽象

5. IO流:★★★★★

IO流:★★★★★,用于处理设备上数据. 流:可以理解数据的流动,就是一个数据流.IO流最终要以对象来体现,对象都存在IO包中. 流也进行分类: 1:输入流(读)和输出流(写). 2:因为处理的数据不同,分为字节流和字符流. 字节流:处理字节数据的流对象.设备上的数据无论是图片或者dvd,文字,它们都以二进制存储的.二进制的最终都是以一个8位为数据单元进行体现,所以计算机中的最小数据单元就是字节.意味着,字节流可以处理设备上的所有数据,所以字节流一样可以处理字符数据. 那么为什么要有字符流呢?因

C++ IO流小结

撒花庆祝下,终于看完了(C++Primer)第一部分,即将进入第二部分! IO部分,最基本的是iostream(istream.ostream),子类有fstream(ifstream.ofstream)和sstream(istringstream.ostringstream). iostream是控制窗口输入输出. fstream是文件输入输出. sstream是字符串输入输出(内存中). 如果两种类型存在继承关系,则可以说一个类“继承”了其父类的行为——接口. C++ 中所提及的父类称为基类