public class CopyFilesUnit {
public static void main(String[] args){
String scrFile=args[0];
String destFile=args[1];
//fileCopy(scrFile,destFile);
if(fileCopy(scrFile,destFile)){
System.out.println("文件自制成功");
}else{
System.out.println("文件自制不成功");
}
}
public static boolean fileCopy(String scrScr,String destScr){
File scrFile,destFile;
FileInputStream in=null;
FileOutputStream out=null;
boolean flag=false;
try{
scrFile=new File(scrScr);
destFile=new File(destScr);
if(!destFile.exists()){
destFile.createNewFile();
}
in=new FileInputStream(scrFile);
out=new FileOutputStream(destFile);
byte[] butf=new byte[1024];
int len;
String str=null;
//StringBuffer str=new StringBuffer();
while((len=in.read(butf))!=1){
str=new String(butf,0,len);
}
//String st=str.toString();
byte[] buff=str.getBytes();
out.write(buff);
in.close();
out.close();
flag= true;
}catch(IOException e){
}
return flag;
}
}
public static void main(String[] args){
String scrFile=args[0];
String destFile=args[1];
//fileCopy(scrFile,destFile);
if(fileCopy(scrFile,destFile)){
System.out.println("文件自制成功");
}else{
System.out.println("文件自制不成功");
}
}
public static boolean fileCopy(String scrScr,String destScr){
File scrFile,destFile;
FileInputStream in=null;
FileOutputStream out=null;
boolean flag=false;
try{
scrFile=new File(scrScr);
destFile=new File(destScr);
if(!destFile.exists()){
destFile.createNewFile();
}
in=new FileInputStream(scrFile);
out=new FileOutputStream(destFile);
byte[] butf=new byte[1024];
int len;
String str=null;
//StringBuffer str=new StringBuffer();
while((len=in.read(butf))!=1){
str=new String(butf,0,len);
}
//String st=str.toString();
byte[] buff=str.getBytes();
out.write(buff);
in.close();
out.close();
flag= true;
}catch(IOException e){
}
return flag;
}
}
str=new String(butf,0,len);
}
你的文件结束符弄错了,把1改成-1就可以了
str=new String(butf,0,len);
}
改成
while((len=in.read(butf))!=-1){
str=new String(butf,0,len);
}
import java.io.*;public class CopyAll { public void copyDir(File from, File to) {
if (!to.exists()) {
to.mkdirs();
}
File[] files = from.listFiles();
for (int i = 0; i < files.length; i++) {
File file1 = files[i];
File file2 = new File(to.getPath() + File.separator
+ files[i].getName());
if (!file1.isDirectory()) {
copyFile(file1, file2);
} else {
copyDir(file1, file2);
}
} } public void copyFile(File src, File dest) {
try {
System.out.println(src.getAbsoluteFile() + " -> "
+ dest.getAbsoluteFile());
FileInputStream in = new FileInputStream(src);
FileOutputStream out = new FileOutputStream(dest);
byte[] buffer = new byte[1024];
while (in.read(buffer) != -1) {
out.write(buffer);
}
out.close();
in.close();
System.out.println("文件拷贝成功");
} catch (Exception e) {
System.out.println("文件拷贝失败");
} } public static void main(String[] args) {
CopyAll t = new CopyAll();
t.copyDir(new File(args[0]), new File(args[1])); }}
str=new String(butf,0,len);
} butf缓冲区的大小为1024个字节长度,如果你的文件长度大于1024怎么处理?
所以我感觉你这块有问题,while((len=in.read(butf,0,1024))!=-1) {
str = new String(butf);
out.write(buff);
}你的butf是不是用作缓冲区啊?那为什么不用bufferedInputStream呢?BufferedInputStream in= new BufferedInputStream(new FileInputStream(new File(args[0])));