| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 616 人关注过本帖
标题:文件拷贝问题(代码)
只看楼主 加入收藏
大嘴先生2
Rank: 1
等 级:新手上路
威 望:2
帖 子:815
专家分:0
注 册:2006-4-17
收藏
 问题点数:0 回复次数:5 
文件拷贝问题(代码)
//利用FileInputStream和FileOutputSteam编写一个文件拷贝的程序 运行后结果不是我想要的结果!
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.*;
import java.nio.channels.FileChannel;
class Copy
{
String filename = null;
String path = "456";
File file =null;
String objFilename = null;
File objfile = null;
FileOutputStream output = null;
FileInputStream input = null;
FileChannel inputchannel = null;
FileChannel outputchannel = null;
File pathfile=null;
File yuanfile = null;
File bojectfile = null;
Copy(String yuan,String obj)
{
pathfile = new File(path);
yuanfile = new File(yuan);
bojectfile = new File(obj);
filename = yuan;
objFilename = obj;
file = new File(path,filename);
objfile = new File(path,objFilename);
judge(pathfile,file);
judge(pathfile,objfile);
read();
write();
}
public void judge(File pathfile,File file) //判确定文件存在
{
if(pathfile.isDirectory()==false)
{
pathfile.mkdirs();
}
if(file.isFile()==false)
{
try
{
file.createNewFile();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
public void read() //读文件
{
try
{
input = new FileInputStream(file);
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
ByteBuffer buf = ByteBuffer.allocate(200);
inputchannel = input.getChannel();
try
{
inputchannel.read(buf);
}
catch (IOException e)
{
System.out.println(e.toString());
}
buf.flip();
System.out.println("文件内容:");
//System.out.println(buf.get());
try //关闭流
{
input.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
public void write() //写文件
{
try
{
output = new FileOutputStream(objfile);
}
catch (FileNotFoundException e1)
{
e1.printStackTrace();
}
ByteBuffer buf = ByteBuffer.allocate(200);
outputchannel = output.getChannel();
try
{
inputchannel.write(buf);
}
catch (IOException e)
{
System.out.println(e.toString());
}
buf.flip();
System.out.println("文件写入完成");
try
{
output.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
public String toString()
{
return "完成";
}
public static void main(String args[]) //主方法
{
String yuan="123.txt";
String obj="456.txt";
Copy copy = new Copy(yuan,obj);
//System.out.println(copy.toString());
}
}
搜索更多相关主题的帖子: 文件 代码 拷贝 
2007-06-30 14:52
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
NIO我不会,IO我可以指点一下

可惜不是你,陪我到最后
2007-06-30 16:09
狂放不羁
Rank: 4
等 级:贵宾
威 望:12
帖 子:925
专家分:0
注 册:2007-1-24
收藏
得分:0 
你想要什么结果?
2007-06-30 16:22
狂放不羁
Rank: 4
等 级:贵宾
威 望:12
帖 子:925
专家分:0
注 册:2007-1-24
收藏
得分:0 

呵呵。你没有实现复制,只是简单的写入了0而已。

public void write() //写文件
{
try
{
output = new FileOutputStream(objfile);
}
catch (FileNotFoundException e1)
{
e1.printStackTrace();
}
ByteBuffer buf = ByteBuffer.allocate(200);
outputchannel = output.getChannel();
try
{
inputchannel.write(buf);//应该是outputchannel 不然的话,会认为通道已经关了。。再说你的缓冲器里没有任何东西。所以写进去全是0,你要想把内容写如到缓冲器中,然后在用通道把内容写到456这个文件里。。
}
catch (IOException e)
{
System.out.println(e.toString());
}
buf.flip();
System.out.println("文件写入完成");
try
{
output.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}

2007-06-30 16:52
神vLinux飘飘x
Rank: 2
等 级:新手上路
威 望:3
帖 子:436
专家分:0
注 册:2007-1-4
收藏
得分:0 
老大,没必要那么罗嗦的

[CODE]
/*
* JCopy.java
*
* Created on 2007年6月30日, 下午4:16
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/

package jcopy;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.channels.FileChannel;

/**
*
* @author vlinux
*/
public class JCopy {

private FileChannel sourceFileChannel;
private FileChannel destFileChannel;
private long bufferSize;

public JCopy( File sourceFile, File destFile, long bufferSize ) throws FileNotFoundException, IOException {
try{
sourceFileChannel = new java.io.FileInputStream( sourceFile ).getChannel();
destFileChannel = new java.io.FileOutputStream( destFile ).getChannel();
this.bufferSize = bufferSize;
for( long index=0; bufferSize == sourceFileChannel.transferTo(index,bufferSize,destFileChannel); index+=bufferSize );
} finally {
try{ sourceFileChannel.close(); } catch( Exception ex ) {}
try{ destFileChannel.close(); } catch( Exception ex ) {}
}
}


public static void main( String... args ) throws FileNotFoundException, IOException {
File sf = new File("xxx.rmvb");
File df = new File("唐伯虎点秋香.rmvb");
new JCopy( sf, df, 1024*1024 );
}

}


[/CODE]
2007-06-30 17:20
大嘴先生2
Rank: 1
等 级:新手上路
威 望:2
帖 子:815
专家分:0
注 册:2006-4-17
收藏
得分:0 
兄弟们辛苦了!

骑白马的未必是王子,也可能是唐僧;有翅膀的未必是天使,也可能是鸟人。
2007-06-30 18:01
快速回复:文件拷贝问题(代码)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017552 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved