【java大文件复制】
来源:互联网 发布:手机视频直播软件 编辑:程序博客网 时间:2024/05/17 06:36
用java复制大文件最简单的方法就是用FileInputStream类和FileOutputStream类配合使用,几行代码就能搞定:
import java.io.*;import java.awt.*;public class Main{ public static void main(String args[])throws Exception { Frame frame=new Frame("承载窗体"); FileDialog fd1=new FileDialog(frame,"文件选择对话框"); FileDialog fd2=new FileDialog(frame,"文件保存对话框"); fd1.setVisible(true); String path1=fd1.getDirectory()+fd1.getFile(); fd2.setVisible(true); String path2=fd2.getDirectory()+fd2.getFile(); FileInputStream fis=new FileInputStream(path1); FileOutputStream fos=new FileOutputStream(path2); int flag=-1; byte f[]=new byte[1024]; while((flag=fis.read(f))!=-1) { fos.write(f,0,flag); } fos.close(); fis.close(); System.out.println("文件复制成功!"); System.exit(0); }}但是,假如我们想要先把大文件保存成文本文件,然后再从文本文件中将字符读取出并还原成源文件的话该怎么做呢?
很明显,这需要FileInputStream,FileOutputStream,FileReader,FileWriter四个类共同发挥作用~
首先,将文件以字节形式读出并转换成十六进制字符串保存在某文件里:
import java.awt.*;import java.awt.event.*;import java.io.*;public class X{ public static void main(String args[])throws Exception { Frame frame=new Frame("承载窗体"); FileDialog fd=new FileDialog(frame,"文件选择对话框"); FileDialog fd1=new FileDialog(frame,"文件保存对话框"); frame.setSize(1366,768); fd.setVisible(true); String path1,path2; path1=fd.getDirectory()+fd.getFile(); fd1.setVisible(true); path2=fd1.getDirectory()+fd1.getFile(); FileInputStream fis=new FileInputStream(path1); FileWriter fr=new FileWriter(new File(path2)); int flag=-1; byte f[]=new byte[2048]; while((flag=fis.read(f))!=-1) { String str=""; int i; for(i=0;i<=flag-1;i++) { String temp=Integer.toHexString(f[i]&(0XFF)); if(temp.length()==1) { temp="0"+temp; } str=str+temp; } fr.write(str); } fr.close(); fis.close(); System.exit(0); }}
先假设保存十六进制字符串的文件是x.dat,那么,下一步就是从x.dat文件中两个字符两个字符的取出字符,转换成一个字节,并用FileOuputStream类保存入目标文件(目标文件与源文件格式相同,例如源文件是x.avi,那么目标文件的格式应该是y.avi).
将保存有源文件十六进制字符串的文件x.dat转换成目标文件:
import java.io.*;import java.awt.*;import java.awt.event.*;public class Y{ public static void main(String args[])throws Exception { Frame frame=new Frame("承载窗体"); FileDialog fd=new FileDialog(frame,"文件选择对话框"); FileDialog fd1=new FileDialog(frame,"文件保存对话框"); fd.setVisible(true); String path1=fd.getDirectory()+fd.getFile(); fd1.setVisible(true); String path2=fd1.getDirectory()+fd1.getFile(); FileReader fr=new FileReader(new File(path1)); FileOutputStream fos=new FileOutputStream(path2); try { int a,b; while((a=fr.read())!=-1&&(b=fr.read())!=-1) { char ax=(char)a; char bx=(char)b; String ab=""+ax+bx; byte temp; temp = (byte)((Integer.decode("0X"+ab)).intValue()); fos.write(temp); } fos.close(); fr.close(); System.out.println("已经成功转换!"); System.exit(0); } catch(Exception e){} }}
0 0
- 【java大文件复制】
- java复制大文件
- java复制大文件
- java操作大文件复制
- Java多线程复制大文件
- Java 复制大文件方式FileChannel 用法
- Java关于大文件分批复制
- 复制大文件
- 大文件复制
- 复制大文件1
- 复制大文件
- Java复制、读取大文件的固定套路
- java大文件复制最高效方法:多线程FileChannel
- C#FileStream复制大文件
- C#FileStream复制大文件
- C#FileStream复制大文件
- 解读IO复制大文件
- mmap实现大文件复制
- uva 11159 Factors and Multiples
- 手把手教你搭建vim的IDE环境
- undefined reference to `pthread_join'解决办法
- android SDK中添加自定义api
- 采药
- 【java大文件复制】
- 求两个复数的加减乘
- Java多态性
- 编程中的命名设计那点事(转)
- 写了个程序生成bmp图像,可是发现打不开
- ACM-计算几何之Toys——poj2318
- 读《IT项目网络信息安全案例》体会
- lalaljhjje
- matlab正态分布检验