JAVA中IO流文件文本的操作(字节流InputStream和OutputStream)字节流File读写操作以及图片的复制

字节流

InputStream(读)和OutputStream(写)

其实字节流和字符流很相似,我们掌握其中的规律即可掌握。


任务1:用字节流将数据写入目标文本

import java.io.*;
public class FileStream
{
	public static void main(String[] args)throws IOException 
	{
		writeFile();
	}

	public static void writeFile()throws IOException
	{
		FileOutputStream fos=new FileOutputStream("fos.txt");
		fos.write("abcde".getBytes());//字节流不支持直接写入字符串,所以将字符串变为字符数组
		fos.close();//关闭资源
	}
}

结果

JAVA中IO流文件文本的操作(字节流InputStream和OutputStream)字节流File读写操作以及图片的复制_第1张图片


任务2:将目标文件中的数据读出

import java.io.*;
public class FileStream
{
	public static void main(String[] args)throws IOException 
	{
		readFile1();
	}

	public static void readFile1()throws IOException
	{
		FileInputStream fis=new FileInputStream("fos.txt");
		int ch=0;
		while((ch=fis.read())!=-1)//一个一个读
		{
			System.out.println((char)ch);//ln 换行
		}
		fis.close();
	}
}

结果

JAVA中IO流文件文本的操作(字节流InputStream和OutputStream)字节流File读写操作以及图片的复制_第2张图片


任务3:将上述读写数据的方法进行改进

import java.io.*;
public class FileStream
{
	public static void main(String[] args)throws IOException 
	{
		readFile2();
	}

	public static void readFile2()throws IOException
	{
		FileInputStream fis=new FileInputStream("fos.txt");
		byte[] buf=new byte[1024];//创建一个数组
		int len=0;
		while((len=fis.read(buf))!=-1)//如果不是-1就一直往里面进行装
		{
			System.out.println(new String(buf,0,len));
		}
		fis.close();
	}
}

结果

JAVA中IO流文件文本的操作(字节流InputStream和OutputStream)字节流File读写操作以及图片的复制_第3张图片


available() 的介绍和应用

import java.io.*;
public class FileStream
{
	public static void main(String[] args)throws IOException 
	{
		readFile3();
	}

	public static void readFile3()throws IOException
	{
		FileInputStream fis=new FileInputStream("fos.txt");
		int num=fis.available();
		System.out.println(num);
	}
}

结果

在这里插入图片描述

我们发现了,available () 这个关键字的用法是可以获取文本中内容的字节数。

那我们在变一下 我们在文本中 (原本为abcde )我们现在增加一个回车符号,并且加入g后,看看是多少个字节数。

结果

在这里插入图片描述

我们发现了,个数为8,这就说明回车符号占了两个字节。这里就是\n\r


利用字节流进行图片的复制

这里我们讲到了字节流,就不得不学习和了解一下它有别于字符流的区别,就是在图片上可以进行操作和读取。

代码

 /*
 任务:
     进行图片的拷贝
	 思路:
	 1.用字节读取流对象和图片关联
	 2.用字节写入流对象创建一个图片文件,用于存储获取到的图片数据
	 3。通过循环读写,完成数据的储存
	 4.关闭资源
 */
 
 import java.io.*;
 public class CopyPicture 
{
	public static void main(String[] args)
	{
		FileOutputStream fos=null;
		FileInputStream fis=null;
		try//自定义 try-catch 也可以直接抛出
		{
			fos=new FileOutputStream("F:\\CloudMusic\\Copy_picture.jpg");//这个是写,是创建一个文件
			fis=new FileInputStream("F:\\WeChat\\chakayanhu.jpg");//注意,这个是读,就是源文件

			byte[] buf=new byte[1024];
			int len=0;
			while((len=fis.read(buf))!=-1)
			{
				fos.write(buf,0,len);
			}
		}
		catch (IOException e)
		{
			throw new RuntimeException("复制文件失败");
		
		}
		finally
		{
			try
			{
				if(fis!=null)
					fis.close();
			}
			catch (IOException e)
			{
				throw new RuntimeException("读取文件失败");
			}
		}
	}
}

原图是:JAVA中IO流文件文本的操作(字节流InputStream和OutputStream)字节流File读写操作以及图片的复制_第4张图片

JAVA中IO流文件文本的操作(字节流InputStream和OutputStream)字节流File读写操作以及图片的复制_第5张图片

结果

JAVA中IO流文件文本的操作(字节流InputStream和OutputStream)字节流File读写操作以及图片的复制_第6张图片

JAVA中IO流文件文本的操作(字节流InputStream和OutputStream)字节流File读写操作以及图片的复制_第7张图片

搞定

你可能感兴趣的:(得荣,my,heart,Rich,Boy,塔城,Lover,Boy,MADNESS)