`
十三月的
  • 浏览: 168871 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

文件读写

阅读更多

 


 

 文件的读写分为字节流和字符流两种方式。

字节流:InputStream  OutputStream  

            ( FileInputStream    FileOutStream

              DataInputStream  DataOutputStream等)

字符流:Reader  Writer

            (FileReader             FileWriter   

            BufferedReader       BufferedWriter等)

 

例题:1文件的复制

         

文件的复制可以用字节输入流先是读到内存中,再用字节输出流读出进文件中。

先后用了FileInputStream 和缓冲流BufferedReader  比较两次时间长短

          

package cn321_0;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

public class FileCopy {

	/**
	 * 字节输入输出流写入 用时11分钟
	 *
	 * @throws FileNotFoundException
	 */
	public static void main(String[] args) throws Exception {
		FileCopy filecopy = new FileCopy();
		String fileName = new String("D:\\哥的视频\\非娱乐\\双截棍\\单棍套路.flv");
		String copyName1 = new String("F:\\1.flv");

		filecopy.copyFile(fileName, copyName1);

	}

	// 复制文件的方法
	public void copyFile(String fileName, String copyName1) throws Exception {
		// 创建输入流对象
		InputStream is = new FileInputStream(fileName);
		// 创建输出流对象
		OutputStream os = new FileOutputStream(copyName1);
		long time1 = System.currentTimeMillis();
		System.out.println("开始的时间是" + time1);
//        //相当于是缓存  用时差1484
//		byte  [] content=new byte [1024];
//
//		int i = 0;
//		while ((i = is.read(content)) != -1) {
//			os.write(content);
//		}
		int i=0;
		while ((i = is.read()) != -1) {
		os.write(i);
		}
		long time2 = System.currentTimeMillis();
		System.out.println("结束的时间是" + time2);
		System.out.println("前后的时间差是:" + (time2 - time1));
		// 关闭输出流
		is.close();
		os.close();

	}
}

 

package cn321_0;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class FileCopy2 {

	/**
	 * BufferedReader/Writer缓冲流写入
	 *用时3402毫秒
	 * @throws IOException
	 */
	public static void main(String[] args) throws IOException {
	    FileCopy2  filecopy2=new FileCopy2();
		String  fileName=new String("D:\\哥的视频\\非娱乐\\双截棍\\单棍套路.flv");
	    String copyName=new String ("F:\\2.flv");
	    filecopy2.copyFile(fileName,copyName);
	}

	private void copyFile(String fileName, String copyName) throws IOException {
		 //创建输入流对象
		InputStream  is=new FileInputStream(fileName);
		//创建缓冲流对象
		BufferedInputStream  bis=new BufferedInputStream(is);
		//创建输出流对象
		OutputStream  os=new FileOutputStream(copyName);
		//创建缓冲输出流对象
		BufferedOutputStream  bos=new BufferedOutputStream(os);

		long time1=System.currentTimeMillis();
		System.out.println("开始的时间是:"+time1);

		int i=0;
		while((i=bis.read())!=-1){
			bos.write(i);
		}
		long time2=System.currentTimeMillis();
		System.out.println("结束的时间是:"+time2);
		System.out.println("两次的时间差是:"+(time2-time1));

		//强制写入
		bos.flush();
		//关闭输入输出流
		is.close();
		os.close();
		bis.close();
		bos.close();

	}

}

 

例题2  使用字符流实现文件的复制

 

 

package cn321;

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

public class FileCopy {
	 public  static  void  main(String args[]){
		 FileCopy  filecopy=new FileCopy();
		 
	 }
       public  FileCopy(){
    	 //定义一个字符流对象
    	   FileReader  fr=null;
    	   FileWriter fw=null;
    	   try{
    	   fr=new FileReader("D:\\teacher.java");
    	   fw=new FileWriter("D:\\1.java");
    	   //创建数组  相当于是缓存
    	   char []  content=new char[1024];
    	   int i=0;
    	   //使用读进数组的方法
    	   while((i=fr.read(content))!=-1){
    		    String s=new String (content,0,i);
    		    fw.write(content);
    	   }
    	   }catch(Exception e){
    		   e.printStackTrace();
    	   }finally{
    		   //关闭输入流
    		    try{
    		    	fw.close();
    		    	fr.close();
    		    	
    		    }catch(IOException e){
    		    	e.printStackTrace();
    		    }
    		    }
    		   
    	   }
       }

 使用缓冲字符流

package cn321;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class FileCopy2 {
	 public  static  void  main(String args[]){
		 FileCopy2  filecopy2=new FileCopy2();
		 
	 }
	
	   public  FileCopy2(){
	    	 //定义一个字符流对象
	    	   FileReader  fr=null;
	    	   BufferedReader  br=null;
	    	   FileWriter fw=null;
	    	   BufferedWriter  bw=null;
	    	   try{
	    	   fr=new FileReader("D:\\teacher.java");
	    	   br=new BufferedReader(fr);
	    	   fw=new FileWriter("D:\\1.java");
	    	   bw=new BufferedWriter(fw);  
	    
	    	   String  s="";
	    	 //使用一行一行的读取的方法  效率比较高  
	    	   while((s=br.readLine())!=null){
	    		    bw.write(s+"\r\n");//"\r\n"是回车换行
	    	   }
	    	   }catch(Exception e){
	    		   e.printStackTrace();
	    	   }finally{
	    		   //关闭输入流
	    		    try{
	    		    	bw.close();
	    		    	fw.close();
	    		    	br.close();
	    		    	fr.close();
	    		    	
	    		    }catch(IOException e){
	    		    	e.printStackTrace();
	    		    }
	    		    }
	    		   
	    	   }
}

 

 

分享到:
评论

相关推荐

    文件读写监控工具文件读写监控工具文件读写监控工具

    文件读写监控工具是计算机系统管理和维护中不可或缺的软件,它们可以帮助用户跟踪、记录和分析系统中的文件操作,包括打开、创建、修改、删除等动作。这类工具在故障排查、性能优化、安全审计等方面有着广泛的应用。...

    易语言大文件读写模块

    在易语言中,大文件读写是一个常见的需求,尤其在处理大数据、日志分析或者文件备份等场景下。本模块就是针对这种需求而设计的,名为“易语言大文件读写模块”。 该模块的核心功能是优化大文件的处理效率,避免一次...

    android文件读写权限

    在Android应用开发中,文件读写权限是至关重要的一个环节,因为这关乎到应用程序能否正常地存储和访问数据。Android操作系统采用严格的权限管理系统,确保应用只能在其被授权的范围内操作。下面将详细介绍Android中...

    Python中使用asyncio 封装文件读写

    ### Python中使用asyncio封装文件读写 #### 引言 在现代软件开发中,特别是在Web后端和服务端开发领域,非阻塞I/O技术变得越来越重要。这主要是因为随着互联网应用规模的增长,服务器需要处理成千上万个并发连接,...

    python中的文件读写练习题(csdn)————程序.pdf

    Python 文件读写练习题 Python 语言中处理文件读写是非常重要的一部分,本文将通过实践 exercises 介绍 Python 中的文件读写操作。 文件读写的重要性 在实际应用中,文件读写操作是非常常见的,例如读取数据文件...

    文件读写+图形用户界面

    1、 文件读写 包括两个内容:查找文件中“java”字符串的个数;利用命令行参数显示文件的最后指定行。 在查找“java”字符串个数的程序中,先读出文件内容,再逐个字符对比,找出“java”字符,最终把结果写入另一...

    Android 文件读写操作

    在Android系统中,文件读写操作是开发过程中常见的任务,涉及到资源文件、数据区文件以及外部存储(如SD卡)的访问。以下是对这些操作的详细说明: 一、资源文件的读取 1. 从resource的raw中读取文件数据: 资源...

    MFC INI文件读写

    ### MFC INI 文件读写详解 #### 一、概述 在 Windows 操作系统中,INI 文件是一种重要的配置文件格式,通常用于存储程序的配置信息。对于开发人员来说,掌握如何使用 MFC(Microsoft Foundation Classes)框架进行...

    Android 13读写权限变更,小米14 txt 文件读写

    对于开发者来说,这意味着需要更新代码以适配这些新规则,尤其是在进行文件读写操作时。本文将详细探讨Android 13的读写权限变更,以及如何在小米14设备上处理txt文件的读写测试。 首先,理解Android 13中的存储...

    csv文件读写操作

    对于大数据量的CSV文件,可以考虑使用更高效的文件读写方法,如`std::ifstream`和`std::ofstream`,或者使用内存映射文件(`CreateFileMapping`和`MapViewOfFile`)。 8. **测试与调试** 完成代码编写后,进行...

    File_文件读写_MFC读写文件_

    在编程领域,文件读写是常见的操作之一,尤其是在Windows应用程序开发中,MFC(Microsoft Foundation Classes)框架提供了方便的API来实现这一功能。MFC是一个C++类库,它封装了Windows API,使得开发者可以更加方便...

    C#文件读写操作

    在C#编程语言中,文件读写操作是基础且至关重要的功能,允许程序与本地文件系统交互。本文将深入探讨如何在C#中执行文件的读写操作,以及如何进行文件删除。 首先,让我们了解C#中用于文件操作的主要类:`System.IO...

    DWG文件读写开发库

    DWG文件读写开发库是专门用于处理DWG(Drawing)格式文件的工具,这种格式通常与AutoCAD软件紧密关联,用于存储二维和三维设计数据。这个开发库为程序员提供了在C++和C#编程环境中读取和写入DWG文件的能力,极大地...

    采用无缓冲方式实现文件读写.docx

    "采用无缓冲方式实现文件读写" 本文档是武汉大学计算机学院《Windows原理与应用》课程实验报告,旨在介绍如何使用无缓冲方式实现文件读写。该实验报告的主要内容包括实验目的、实验设计、实验原理和实验步骤等方面...

    c文件读写函数

    C语言文件读写函数详解 在 Linux 操作系统中,C 语言提供了多种文件读写函数,包括非标准文件读写函数和标准文件读写函数。下面将对这两种类型的文件读写函数进行详细介绍。 非标准文件读写函数 非标准文件读写...

    delphi 文件读写

    在Delphi编程环境中,文件读写是常见的操作,主要用于存储和检索数据。本文将深入探讨如何使用Delphi进行文本文件的读写操作,包括基本概念、常用函数和类,以及实际应用示例。 首先,了解文件系统的基本概念是至关...

    MFC txt文件读写

    在这个"**MFC txt文件读写**"的实践中,我们将探讨如何利用MFC来处理文本文件的读取和写入操作。 首先,我们需要了解MFC中的CFile类,它是处理文件操作的基础。CFile类提供了打开、关闭、读取和写入文件的基本方法...

    开发windows驱动程序,实现监控文件读写操作.zip

    本压缩包"开发windows驱动程序,实现监控文件读写操作.zip"提供了一个关于如何创建驱动程序以监控文件系统读写操作的实例。下面我们将深入探讨这一主题。 1. **驱动程序概述** - 驱动程序是硬件设备与操作系统之间...

Global site tag (gtag.js) - Google Analytics