`
_Yggd
  • 浏览: 89207 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

java文件操作的比较

    博客分类:
  • I/O
阅读更多
package IO;

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

public class first {


public static void main(String[] args) throws IOException {
FileInputStream fin=new FileInputStream("C:/Users/RDGFT/Desktop/in.txt");
FileOutputStream fout=new FileOutputStream("C:/Users/RDGFT/Desktop/out.txt");
int i;
long a=System.currentTimeMillis();
while((i=fin.read())!=-1)
{
fout.write(i);
}
System.out.println("执行耗时 : "+(System.currentTimeMillis()-a)/1000f+" 秒 ");
fin.close();
fout.close();
}
//57.3s
}





package IO;


import java.io.*;

public class second {


public static void main(String[] args) throws IOException {

FileReader fin=new FileReader("C:/Users/RDGFT/Desktop/in.txt");
FileWriter fout=new FileWriter("C:/Users/RDGFT/Desktop/out.txt");
int i;
long a=System.currentTimeMillis();
while((i=fin.read())!=-1)
{
fout.write(i);
}
System.out.println("执行耗时 : "+(System.currentTimeMillis()-a)/1000f+" 秒 ");
fin.close();
fout.close();
}
//1.958 秒
}





package IO;
import java.io.*;
public class third {


public static void main(String[] args) throws IOException {
BufferedInputStream bin=new BufferedInputStream(new FileInputStream("C:/Users/RDGFT/Desktop/in.txt"));
BufferedOutputStream bout=new BufferedOutputStream(new FileOutputStream("C:/Users/RDGFT/Desktop/out.txt"));
long a=System.currentTimeMillis();
while(bin.available()>0)
{
bout.write(bin.read());
}
System.out.println("执行耗时 : "+(System.currentTimeMillis()-a)/1000f+" 秒 ");
bout.flush();
bin.close();
bout.close();
}
//35.592 秒

}





package IO;

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

public class fourth {

/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new FileReader("C:/Users/RDGFT/Desktop/in.txt"));
BufferedWriter bw=new BufferedWriter(new FileWriter("C:/Users/RDGFT/Desktop/out.txt"));
int i;
long a=System.currentTimeMillis();
String str;
while((str=br.readLine())!=null)
{
bw.write(str);
}
System.out.println("执行耗时 : "+(System.currentTimeMillis()-a)/1000f+" 秒 ");
br.close();
bw.close();
}
//0.42 秒
}


以下是javaNIO中的内容




package NIO;

import java.io.*;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
public class first {
       public static void copyByMapped() throws Exception {
           FileInputStream fIn = new FileInputStream("C:/Users/RDGFT/Desktop/in.txt");
           FileOutputStream fOut = new FileOutputStream("C:/Users/RDGFT/Desktop/out.txt");
           FileChannel fIChan = fIn.getChannel();
           FileChannel fOChan = fOut.getChannel();
           long fSize = fIChan.size();
           MappedByteBuffer mBuf = fIChan.map(FileChannel.MapMode.READ_ONLY, 0, fSize);
           fOChan.write(mBuf); // this copies the file
           fIChan.close();
           fIn.close();
           fOChan.close();
           fOut.close();
       }
      
       public static void copyByChannel() throws Exception{
       FileInputStream fin = new FileInputStream("C:/Users/RDGFT/Desktop/in.txt" );
       FileOutputStream fout = new FileOutputStream("C:/Users/RDGFT/Desktop/out.txt");
       FileChannel fcin = fin.getChannel();
       FileChannel fcout = fout.getChannel();
       ByteBuffer buffer = ByteBuffer.allocate( 1024 );
       while (true) {
          buffer.clear();
          int r = fcin.read( buffer );
          if (r==-1) {
            break;
          }
          buffer.flip();
          fcout.write( buffer );
          }
       }
      
       public static void copyByFastChannel() throws Exception{
           FileInputStream fin = new FileInputStream("C:/Users/RDGFT/Desktop/in.txt");
           FileOutputStream fout = new FileOutputStream("C:/Users/RDGFT/Desktop/out.txt");
           FileChannel fcin = fin.getChannel();
           FileChannel fcout = fout.getChannel();
           ByteBuffer buffer = ByteBuffer.allocateDirect( 1024 );
           while (true) {
              buffer.clear();
              int r = fcin.read( buffer );
              if (r==-1) {
                break;
              }
              buffer.flip();
              fcout.write( buffer );
           }
       }
      
     
      
       public static void copyByBufferStream() throws Exception{
       FileInputStream fin = new FileInputStream("C:/Users/RDGFT/Desktop/in.txt" );
       BufferedInputStream bin = new BufferedInputStream(fin);
       FileOutputStream fout = new FileOutputStream("C:/Users/RDGFT/Desktop/out.txt");
       BufferedOutputStream bout = new BufferedOutputStream(fout);
      
       int r=0;
       byte ch[] = new byte[1024];
       while((r=bin.read(ch))!=-1){
       fout.write(ch);
       }
      
       fin.close();
       fout.close();
       }
      

      
       public static void copyByByteArrayFileStream() throws Exception{
       FileInputStream fin = new FileInputStream("C:/Users/RDGFT/Desktop/in.txt");
       FileOutputStream fout = new FileOutputStream("C:/Users/RDGFT/Desktop/out.txt");
      
       byte[] ch = new byte[1024];
       int r=0;
       while((r=fin.read(ch))!=-1){
       fout.write(ch);
       }
      
       fin.close();
       fout.close();
       }
      
       public static void copyByByteFileStream() throws Exception{
       FileInputStream fin = new FileInputStream("C:/Users/RDGFT/Desktop/in.txt");
       FileOutputStream fout = new FileOutputStream("C:/Users/RDGFT/Desktop/out.txt");
      
       int ch;
       while((ch=fin.read())!=-1){
       fout.write(ch);
       }
      
       fin.close();
       fout.close();
       }
      
      
       public static void main(String[] args)throws Exception {
       long start=0, end =0;
       start = System.currentTimeMillis();
       copyByMapped();
       end = System.currentTimeMillis();
       System.out.println((end-start) + "ms");
      
       start = System.currentTimeMillis();
       copyByChannel();
       end = System.currentTimeMillis();
       System.out.println((end-start) + "ms");
      
       start = System.currentTimeMillis();
       copyByFastChannel();
       end = System.currentTimeMillis();
       System.out.println((end-start) + "ms");
         
       start = System.currentTimeMillis();
       copyByBufferStream();
       end = System.currentTimeMillis();
       System.out.println((end-start) + "ms");
      
       start = System.currentTimeMillis();
       copyByByteArrayFileStream();
       end = System.currentTimeMillis();
       System.out.println((end-start) + "ms");
      
          start = System.currentTimeMillis();
       copyByByteFileStream();
       end = System.currentTimeMillis();
       System.out.println((end-start) + "ms");
       //一次时间为根据个人机器而有所差距
       /**
        * 42ms
316ms
199ms
156ms
227ms
        */
      
       }
}
分享到:
评论

相关推荐

    java文件操作类

    java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java...

    java 操作文件工具类 java 操作文件工具类

    java 操作文件工具类java 操作文件工具类 java 操作文件工具类java 操作文件工具类java 操作文件工具类 java 操作文件工具类java 操作文件工具类java 操作文件工具类 java 操作文件工具类java 操作文件工具类java ...

    java视频教程—Java文件操作

    java视频教程 Java文件操作 JavaFile

    Java文件操作封装类

    Java文件操作封装类

    java文件操作工具类

    java文件操作工具类是java中针对文件操作的一个工具类,可以方便的读取,下载,上传文件等操作,希望可以帮到大家。

    java文件操作大全

    如何在Java中操作文件呢?转载供大家欣赏

    JAVA代码实现远程操作服务器文件

    Session是一个远程服务器文件操作的会话,可以实现文件的移动、复制、删除等操作。通过使用Session,可以实现远程服务器文件的操作。 6. 使用InputStream和BufferedReader实现命令执行结果的获取 InputStream和...

    java实现对文件的各种操作的工具类.md

    # java实现对文件的各种操作的工具类 ## 可以实现的操作有: 1. 删除单个文件 2. 删除文件夹及文件夹下的文件 3. 使用文件流对单个文件进行复制 4. 复制整个文件夹内容(包含子文件夹中的所有内容) 5. ...

    java 移动文件.

    "Java 文件操作" Java 文件操作是 Java 编程语言中的一种基本操作,包括文件的移动、复制、删除、剪切等。下面是关于 Java 文件操作的知识点总结: 一、文件移动 文件移动是指将文件从一个目录下移到另一个目录下...

    java实现windows文件系统操作监控

    Java的`java.nio.file`包提供了丰富的文件操作接口,如`Files.setPosixFilePermissions()`和`Files.newFileChannel()`,可以用来设置权限和创建文件通道进行锁定。 7. **文件自动加密**:文件加密通常涉及对文件...

    java文件读写操作

    这个文件里面包含了java的IO流对文件的操作和java通道加内存映射对文件操作的源码

    Java文件操作一例:Copy 复制文件.rar

    Java文件操作一例:Copy 复制文件,虽然是复制文件,不过通过本源码你可以学习很多相关的Java基础技巧,比如Java对文件的事件处理、取得目录内容的事件处理、如何弹出文件选择器、如何得到选择文件的绝对路径、如何...

    java操作mongodb存储文件实例

    将一系列图片文件存储到MongoDB中 java操作mongodb存储文件

    java文件操作

    java 文件操作,创建文件,创建目录,删除文件目录

    ajax实现java文件下载

    本话题将详细探讨如何通过Ajax实现Java文件的下载,并介绍相关的核心概念和技术。 1. **Ajax**(Asynchronous JavaScript and XML)是一种在不重新加载整个网页的情况下,能够更新部分网页的技术。它通过JavaScript...

    java反编译工具(.class文件反编译成.java文件)

    Java反编译是将已编译的字节码(.class文件)转换回源代码(.java文件)的过程,这对于理解和学习已有的Java程序、逆向工程或调试都是很有用的。标题提到的"java反编译工具"是用于这个目的的软件,它能够帮助开发者...

    JAVA文件打开关闭操作

    JAVA中JFileChooser的使用方法 实现打开保存和关闭文件

    java properties文件操作工具类,可追加修改

    此工具类只用于Java后端在操作Properties文件的时候写的工具类,方便properties文件的存取操作

    java文件操作.xmind

    里面包含了File类的作用、IO流、字节流字符流、异常处理、缓冲流、转换流、序列化、打印流的详细讲解

    java操作文件工具类

    文件工具类java操作文件工具类java操作文件工具类java操作文件工具类java操作文件工具类

Global site tag (gtag.js) - Google Analytics