在某一个文件夹中我们通常是Ctrl+C&Ctrl+V复制一个文档或者图片是吧。简称CV战士。

那么我们来看一下怎么在Java中复制图片和文档呢?这里就要使用到I/O流中的字节流和字符流。

字节流通常用于处理二进制数据,实际上它可以处理任意类型的数据,但它不支持直接写入或读取Unicode码元;字符流通常处理文本数据,它支持写入及读取Unicode码元。

package com.etime02;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/*
 * 使用字节流复制图片 
 * 在java中有个比较重要的知识点就是I/O流(Input&Output)
 * 在对文件操作时就需要用到I/O流,其中输入流就是把硬盘上的东西读取到内存中
 * 而输出流就是把内存中的内容写入到硬盘。这里重点介绍字节流
 * 在计算机中许多图片,音频,视频都是以字节(二进制)形式存在的,
 * 我们想要获取数据就必须通过字节流来获取
 * Java中有两个类FileInputStream和FileOutStream来向内存中读入数据和向硬盘写入到硬盘
 * 使用字节流的步骤
 * 首先打开流——>实现读写方法,实现复制——>关闭流
 */
public class PictureCopy {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		FileInputStream fileInputStream=null;
		FileOutputStream fileOutputStream=null;
		try {
			//首先打开流
			fileInputStream=new FileInputStream("D:"+File.separator+"1.jpg");//源文件
			fileOutputStream=new FileOutputStream("D:"+File.separator+"copy.jpg");//新文件
			//使用read()和write()方法实现读入和写入
			int i=0;
			while((i=fileInputStream.read())!=-1){
				fileOutputStream.write(i);
			}
			//一些异常的处理
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			//使用完流之后记得要关闭流,释放相关资源
		} finally {
			if (fileInputStream!=null) {
				try {
					fileInputStream.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if (fileOutputStream!=null) {
				try {
					fileOutputStream.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			//显示的给流赋为空
			fileInputStream=null;
			fileOutputStream=null;
		}
	}

}

java图片的存储 java中图片放在哪里_字符流

上面的案列是复制图片,下面我们使用字符流来复制文本。

package com.etime01;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class TextCopy {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//打开流
		FileReader fileReader=null;
		FileWriter fileWriter=null;
		try {
			fileReader=new FileReader("D://1.txt");
			fileWriter=new FileWriter("D://copy.txt");
			char[] buffer=new char[1024*1];
			int len=0;
			//使用write()和read()方法实现读入和写出
			while((len=fileReader.read(buffer))!=-1){
				fileWriter.write(buffer, 0, len);
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			//关闭流,释放相关资源
		} finally {
			if (fileReader!=null) {
				try {
					fileReader.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if (fileWriter!=null) {
				try {
					fileWriter.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			fileReader=null;
			fileWriter=null;
		}
		
	}

}

java图片的存储 java中图片放在哪里_java图片的存储_02

 上面案例分别使用字节流和字符流完成了图片的复制和文件的复制。不管是字节流还是字符流都有两种方法实现。以字节流为例

方法一:把字节一个一个的读入到内存,然后从内存中一个一个的写入到硬盘上。

方法二:把字节读入到内存存入到字节数组(相当于中转站),然后从内存中以字节串的形式写入到硬盘。