IO 复习字节流字符流拷贝文件

/* 本地文件 URL 文件拷贝 *//*文本文件拷贝 可以通过 字符流,也可以通过字节流*/
/*二进制文件拷贝 只可以通过字节流*//* 希望这个例子能帮助搞懂 字符流与字节流的区别 */
import java.io.*; //in order to utilize stream object
import java.util.*; // in order to utilize ArrayList
import java.net.*;
class Copy{
	public static void main(String [] args){
		boolean flag=false;
		String src="C:\\Users\\Ghc\\Desktop\\extractzip.bat";
		String dest="C:\\Users\\Ghc\\Desktop\\Test\\extractzip_copy.bat";
		System.out.println("copy textDoc: from "+src+" to "+dest+(copyTextDoc(src,dest) ? "Successfully!":"Failed"));

		src="C:\\Users\\Ghc\\Desktop\\psb.jpg";
		dest="C:\\Users\\Ghc\\Desktop\\Test\\psb.jpg";
		System.out.println("copy textDoc: from "+src+" to "+dest+(copyBinFile(src,dest) ? "Successfully!":"Failed"));

		String url="http://qiniuuwmp3.changba.com/852316795.mp3";
		String destPath="C:\\Users\\Ghc\\Desktop\\Test\\music.mp3";

		// downLoad mp3 from URL
		downLoadMP3FromURL(url,destPath);
	}

	public static void downLoadMP3FromURL(String url,String destPath){
		InputStream urlInpts=null;
		BufferedInputStream bufinpts=null;
		BufferedOutputStream bufoutpts=null;
		try{
			urlInpts=new URL(url).openStream();
			bufinpts=new BufferedInputStream(urlInpts);
			bufoutpts=new BufferedOutputStream(new FileOutputStream(destPath));

			byte[] musicBuf=new byte[8192];
			int len=-1;
			while((len=bufinpts.read(musicBuf))!=-1){
					bufoutpts.write(musicBuf,0,len);
					bufoutpts.flush();
				}
			}
			catch(MalformedURLException mfurle){
				mfurle.printStackTrace();
			}
			catch(IOException ioe){
				ioe.printStackTrace();
			}
  }

	public static boolean copyTextDoc(String src,String dest){
		boolean flag=true;

		BufferedReader bufr=null;

		BufferedWriter bufw=null;
		ArrayList<String> lineList=null;

		try{
			//read text file

			//bufr=new BufferedReader(new InputStreamReader(new FileInputStream(src)));
			//等价于
			bufr=new BufferedReader(new FileReader(src));

			//bufw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(dest)));
			//等价于
			bufw=new BufferedWriter(new FileWriter(dest));
			lineList=new ArrayList<String>();

			String line=null;

		while((line=bufr.readLine())!=null){
			lineList.add(line);
			bufw.write(line,0,line.length());
			bufw.newLine();
			bufw.flush(); // must to flush!!! attention!!!
			}

		Iterator<String> it=lineList.iterator();
		while(it.hasNext()){
			line=it.next();
			System.out.println(line+" from iterator");
			}
		}
		catch(IOException ioe){
			ioe.printStackTrace();
			flag=false;

			//write text file

		}
		finally{
			if(bufr!=null)
				try{
					bufr.close();
					bufr=null;
				}
				catch(IOException ioe){
					ioe.printStackTrace();
				}
			if(bufw!=null)
				try{
					bufw.close();
					bufw=null;
				}
				catch(IOException ioe){
					ioe.printStackTrace();
				}
		}
		return flag;
	}
	public static boolean copyBinFile(String src,String dest){
		boolean flag=true;
		BufferedInputStream bufinpts=null;

		BufferedOutputStream bufoutpts=null;
		byte [] buf=new byte[1024];
		int len=-1;
		try{
			bufinpts=new BufferedInputStream(new FileInputStream(src));
			bufoutpts=new BufferedOutputStream(new FileOutputStream(dest));

			while((len=bufinpts.read(buf))!=-1){
					bufoutpts.write(buf,0,len); // not need to flush, but the last buf may not been copied
					// print binary data see see , it‘s funny!!!
					/* for(int i=0;i<len;i++){
						System.out.print(buf[i]);
					} */
					bufoutpts.flush();
			}
		}
		catch(IOException ioe){
			ioe.printStackTrace();
			flag=false;
		}
		finally{
			if(bufinpts!=null)
				try{
					bufinpts.close();
					bufinpts=null;
				}
			catch(IOException ioe){
				ioe.printStackTrace();
			}
			if(bufoutpts!=null)
				try{
					bufoutpts.close();
					bufoutpts=null;
				}
			catch(IOException ioe){
				ioe.printStackTrace();
			}
		}

		return flag;
	}
}

  

时间: 2024-10-21 14:13:15

IO 复习字节流字符流拷贝文件的相关文章

Java之字符流读写文件、文件的拷贝

字符流读数据 – 按单个字符读取 创建字符流读文件对象: Reader reader = new FileReader("readme.txt"); 调用方法读取数据: int data = reader.read(); // 读取一个字符,返回该字符代表的整数,若到达流的末尾,返回-1 字符流读数据 – 按字符数组读取 创建字符流读文件对象: Reader reader = new FileReader("readme.txt"); 调用方法读取数据: // 读取

java io流(字符流) 文件打开、读取文件、关闭文件

java io流(字符流) 文件打开 读取文件 关闭文件 //打开文件 //读取文件内容 //关闭文件 import java.io.*; public class Index{ public static void main(String[] args) throws Exception{ //打开文件 //字符流方式打开 //字符流每次按一个字符读取 FileReader wj = new FileReader("D:/java/kj/javanew/src/Index.java"

java使用字节流和字符流实现文件复制

大家在Java开发中都会遇到文件复制的文件,众所周知,需要通过文件输入输出流实现. 那究竟该怎么做那,话不多说,直接上代码: 一,使用字节流复制文件 public class FileByteCopy {public static void main(String[] args) { FileByteCopy f= new FileByteCopy(); try { f.copy("d:/File/1.txt","d:/CopyFile/1.txt"); } cat

io系列之字符流

java中io流系统庞大,知识点众多,作为小白通过五天的视频书籍学习后,总结了io系列的随笔,以便将来复习查看. 本篇为此系列随笔的第一篇:io系列之字符流. IO流 :对数据的传输流向进行操作,java中将这种操作行为本身封装为对象,以供使用. Input and Output java将io流对象都在IO包中.(java.IO.*) 分类: 按照数据种类分: 字节流 和 字符流, 按照数据流向分: 输出流 和 输入流. 字节流抽象类: InputStream OutputStream 字符流

Android笔记:利用InputStream和BufferedReader 进行字节流 字符流处理

通过socket获取字节流处理时最初使用的是BufferedReader和PrintWriter  这种方式在解析字符串时是比较方便的 但是在处理字节时不够方便最终还是回归到InputStream和OutputStream方式 不使用缓存直接使用字节流操作,一次传输的字节数据在300字节以内,目前没有测试差距会有多大. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException;

IO-03字节流字符流

在程序中所有的数据都是以流的方式进行传输和保存的,程序需要数据的时候要使用输入流读取数据,而程序需要将一些数据保存起来则需要使用输出流来完成. 在JAVA.IO包中操作文件内容的主要有两大类:字节流,字符流,两类都分为输入和输出操作.在字节流中输出数据主要是使用OutputStream,输入主要使用InputStream,在字符流中输出主要使用Writer类完成,输入只要使用Reader类完成. 主要的操作流程如下: 使用FILE类打开一个文件 通过字节流或者字符流的子类,指定输出的位置. 进行

使用字符流 创建文件 写入文件 复制文件

import java.io.*; /**   * 使用字符流创建文件复制文件  * 在盘符中文件夹  * 在文件夹中添加文件  * 在文件中写文字  *   复制文件  * */ public class Iof {    public static void main(String[] args) {        try {            fun();                System.out.println();            fun1();          

利用字节流或字符流实现文件夹整体的复制

思路: 1.获取所有的文件夹和子文件的名称然后遍历 2.判断是否是文件夹,是的话进行复制 eg:对D盘mp3文件夹内的所有文件进行复制,复制到F盘MP3文件夹. (1).判断F盘下是否有mp3文件夹,没有的话进行创建. (2).如果创建其他的字目录,需要获得他的目录名和路径(划重点) 3.判断是不是文件,是的话复制(可以用递归) 发挥大事化小,小事化了的精神,我们分为三个部分: 1.写一个复制子文件的方法: 2.写一个复制文件夹的方法: 3.写一个main函数(废话): eg:分开写是为了方便理

Java 字节流 字符流 转换流

我们知道Java中的流分为字符流和字节流,其中字符流主要针对字符文本进行处理,而字节流处理范围更为广泛,毕竟图片.电影等只要是文件都是以二进制的形式存在的,而不是字符. 字符流: FileReader FileWriter. BufferedReader BufferedWriter 字节流: FileInputStream FileOutputStream BufferedInputStream BufferedOutputStream 我们看一下J2SE文档: BufferedReader(