很奇怪的一个问题,程序在copy文件时报了系统报错:exception:java.io.IOException:存储空间不足,无法处理此命令 错误,结果文件只copy了0字节。但系统中磁盘空间还有20多个G。
具体的程序代码如下所示:
public static void CopyFlie(String srcFilename, String dstFilename)
{
try
{
FileChannel srcChannel =
(new FileInputStream(srcFilename)).getChannel();
FileChannel dstChannel =
(new FileOutputStream(dstFilename)).getChannel();
dstChannel.transferFrom(srcChannel, 0L, srcChannel.size());
srcChannel.close();
dstChannel.close();
}
catch (Exception e)
{
log.error( "copy [ " + srcFilename + "] to [ " + dstFilename + "] except: " + e);
}
}
环境:
操作系统: windows 2000 server SP4
java虚拟机:1.4.2
请路过的朋友发表自己的看法,比较棘手的一个问题?难道是操作系统的bug,还是java的bug?
------解决方法--------------------------------------------------------
我的没有问题
import java.net.*;
import java.util.*;
import java.io.*;
import java.nio.*;
import java.nio.channels.*;
class Test
{
public static void main(String[] args)
{
copyFlie(args[0],args[1]);
}
public static void copyFlie(String srcFilename, String dstFilename)
{
try
{
FileChannel srcChannel =
(new FileInputStream(srcFilename)).getChannel();
FileChannel dstChannel =
(new FileOutputStream(dstFilename)).getChannel();
dstChannel.transferFrom(srcChannel, 0L, srcChannel.size());
srcChannel.close();
dstChannel.close();
}
catch (Exception e)
{
e.printStackTrace();
//log.error( "copy [ " + srcFilename + "] to [ " + dstFilename + "] except: " + e);
}
}
}
java Test C:\1.txt C:\2.txt
------解决方法--------------------------------------------------------
这么大的文件啊,那我没有试过。不过我试用用COS上传组件时也用这个方法进行文件拷贝,也没有出现错误,而且文件是600M大啊。