java IO流学习笔记------(1)文件字节流FileInputStream&FileOutputStream

java IO流学习笔记------(1)

IO流总述

在这里插入图片描述
在这里插入图片描述

• 输入流:数据源到程序(InputStream、Reader读进来)
• 输出流:程序到目的地(OutputStream、Writer写出去)

流分类 :
• 节点流:可以直接从数据源或目的地读写数据

• 处理流(包装流):不直接连接到数据源或目的地,是其他流进行封装。 目的主要是简化操作和提高性能。

• 节点流和处理流的关系:
① 节点流处于io操作的第一线,所有操作必须通过他们进行;
② 处理流可以对其他流进行处理(提高效率或操作灵活性)。

• 字节流:按照字节读取数据(InputStream、OutputStream)

• 字符流:按照字符读取数据(Reader、Writer) ,因为文件编码的不同,从而有了对字符进行高效操作的字符流对象。原理:底层还是基于字节流操作,自动搜寻了指定的码表。

IO流读取和写出的四个固有步骤:
1.创建源
2.选择流
3.操作
4.释放(有的流内部自动释放.但写上无错)

IO流—文件字节流FileInputStream&FileOutputStream

FileInputStream:通过字节的方式读取文件,适合读取所有类型的文件(图像、视频等),全字符请考虑FileReader

FileOutputStream:通过字节的方式写出或追加数据到文件,适合所有类型的文件(图像、视频等),全字符请考虑FileWriter

重要方法:
int read() 从该输入流读取一个字节的数据
int read(byte[] b) 从该输入流读取最多 b.length个字节数组
int read(byte[] b,int off,int len) 从该输入流读取最多len个字节到字节数组,off 偏移量,即从第几个字节开始读取

int write() 将指定字节写入此文件输出流
int write(byte[] b) 将b.length个字节数组从指定的字节数组写入此文件输出流
int write(byte[] b,int off,int len) 将len字节从指定的字节数组开始,从偏移量off开始写入此文件流
close() 关闭流(不可少)

注意:
创建文件输出流以写入由指定的File对象表示的文件。 如果第二个参数为true ,则字节将写入文件的末尾而不是开头
用FileOutputStream流时最好加上flush()刷新操作
用多个流在关闭时,遵循先打开的后关闭

练习代码

文件字节输入流练习

package Io;

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

/**
 * @author 赌徒
 * 文件字节输入流练习
 *
 */
public class FileInputStreamT1 {

	public static void main(String[] args) throws IOException {
		//源头
		File srcFile=new File("data.txt");
		//选择流
		FileInputStream fis=new FileInputStream(srcFile);
		
		byte[] b=new byte[1024];
		int len=-1;
		//操作
		while((len=fis.read(b))!=-1) {
			
			System.out.println(new String(b));
		}
		//释放
		fis.close();
	}
}

文件字节输出流练习

package Io;

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

/**
 * @author 赌徒
 * 文件字节输出流练习
 *
 */
public class FileOutputStreamT1 {

	public static void main(String[] args) throws IOException {
		//源头
		File srcFile=new File("data.txt");
		FileOutputStream fos=new FileOutputStream(srcFile,true);
		String string="你好!";
		
		byte[] b=string.getBytes();
              //操作
		fos.write(b);
              //刷新
		fos.flush();
              //释放
	       fos.close();
	}
}

文件字节流综合练习(文件的复制)

package Io; 

import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 

/** 
* @author 赌徒 
* 文件的复制
* 
*/ 
public class test { 
public static void main(String[] args) throws IOException { 
    //源头
    copy("data.txt", "copy1.txt"); 
} 

public static void copy(String srcFile,String srcFile1 ) throws IOException { 

   //选择流 
   FileInputStream fis=new FileInputStream(srcFile); 
   FileOutputStream fos=new FileOutputStream(srcFile1); 

   byte b[]=new byte[1024]; 
   int len=-1;
   //操作 
   while((len=fis.read(b))!=-1) { 
     fos.write(b,0,len); 
} 
     fos.flush(); 
     // 释放
     // 先打开的后关闭
   fos.close(); 
   fis.close(); 




} 


} 
发布了2 篇原创文章 · 获赞 6 · 访问量 167

猜你喜欢

转载自blog.csdn.net/qq_35577787/article/details/105088073