栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java笔记之IO流

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java笔记之IO流

IO流概念

什么是流
硬件设备和程序之间进行数据交互;数据在硬件和程序之间流动;类似于水流。(input)(output)IO流作用
文件上传和下载

程序在内存中,,,硬件和内存的数据交互。
读进来,写出去

流的分类

源:需要传输的数据本身
目标对象:把数据传输到哪
输出流和输入流是成对出现的
(byte字节)字节流:一般用在传输非文本文件的数据,二进制数据:图片,视频…不能使用记事本打开
(char字符)字符流:一般处理我呢吧数据:如txt等
字节流:byte字节 1byte=8位
字符流:1字符=2字节

stream的都是字节流

writer reader都是字符流

缓存流都有buffered

文件的问题说明
文本文件:字符流
非文本文件:字节流
字节流可以处理文本文件

字符流

使用流的选择标准FileWriter使用

FileWriter(File file) 
给一个File对象构造一个FileWriter对象。  
FileWriter(File file, boolean append) 
给一个File对象构造一个FileWriter对象。  
FileWriter(String fileName) 
构造一个给定文件名的FileWriter对象。  
FileWriter(String fileName, boolean append) 
构造一个FileWriter对象,给出一个带有布尔值的文件名,表示是否附加写入的数据。  

如果构造方法,只有一个参数,那么默认是覆盖模式,后面的内容覆盖掉之前的内容。
如果构造方法,有2个参数,并且第2个参数是true,那么就是追加模式,如果是false,也是覆盖模式。

常用方法

void close() 
关闭流,先刷新。  
void flush() 
刷新流。  
String getEncoding() 
返回此流使用的字符编码的名称。  
void write(char[] cbuf, int off, int len) 
写入字符数组的一部分。  
void write(int c) 
写一个字符  
void write(String str, int off, int len) 
写一个字符串的一部分。 
//		创建对象
		FileWriter fw=new FileWriter("a.txt",true);
//		调用写的方法
		String s="aaa";
		fw.write(s);//将内容写在了字符缓冲区中
		fw.flush();//刷新缓冲区,将内容写入硬盘
		String s1="bbb";
		fw.write(s1);
		fw.flush();

flush()可以把数据写入硬盘中,刷新缓冲区,可以随时调用,刷新。

colse()关闭流,释放资源;先刷新缓冲区再关闭流

FileReader使用
常用方法:

abstract void close() 
关闭流并释放与之相关联的任何系统资源。  
int read() 返回字符的int形式 读到末尾 返回-1
读一个字符  
int read(char[] cbuf) 
将字符读入数组。  
int read(CharBuffer target) 
尝试将字符读入指定的字符缓冲区。 

创建对象

 FileReader(File file) 
创建一个新的 FileReader ,给出 File读取。 
FileReader(String fileName) 
创建一个新的 FileReader ,给定要读取的文件的名称。 

单个字符读取

 		FileReader fr=new FileReader("a.txt");
		int ch=fr.read();
		while(ch!=-1) {
			System.out.println((char)ch);
			ch=fr.read();
		}

第二种读法

缓冲区长度一般是1024的整数倍

//将字符读入数组
		FileReader fr=new FileReader("a.txt");
		
		char [] chars=new char[2];//创建一个字符缓冲区(每2个一读)
		int len = fr.read(chars);//返回字符长度 并把内容存入缓冲去
		
		while(len!=-1) {
			System.out.print(new String(chars,0,len));//将字符数组转换成字符串
			len=fr.read(chars);
		}
		
输入流的步骤
1、创建输入流对象
2、调用read()方法(2种)
   read()方法一次只能读取一个字符;
   调用read(char[] char)方法:读取的效率更高,使用字符数组缓存区来读取字符,实现步骤:
       创建字符缓冲区,大小是1024的N倍
       创建循环变量 int len;
       循环遍历,读取字符数组
       把字符数组转成字符串对象
       关闭流

//首先读取aa.txt
		FileReader fr=new FileReader("E:/a.txt");
		FileWriter fw=new FileWriter("copy.txt");
		//创建缓冲区
		char[] chars=new char[2];
		//循环读入
		int len;
		while((len=fr.read(chars))!=-1) {
//			String str=new String(chars,0,len);
			fw.write(chars);
			
		}
        fw.close();
字节流
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/759657.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号