导航:首页 > 编程语言 > javaio文件复制

javaio文件复制

发布时间:2025-07-04 18:49:09

java我用流来复制文件可是老是拒绝访问怎么回事

兄弟,首先window环境下文件目录是不能用Java流来读取的,目录是使用mkdir或者mkdirs方法创建的。
第二你复制的时候BufferedInputStream的read() 每次是读取一个字节,你用int来接收,这样会隐式转型成4个字节,复制的文件会不对。
第三文件读取的截至调试是返回的 -1 , 不是 1,也不是0
第四当然能正确关闭流这是对的,但是缓存流关闭流的时候,并没有关闭FileInputStream和FileOutputStream,所以建议在关闭缓存流之前先关闭掉FileInputStream和FileOutputStream。
文件复制我是这么写的:
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class MyFile extends File {
private List<MyFile> childFiles;

public MyFile(String pathname) {
super(pathname);
}

public MyFile(File file) {
super(file.getAbsolutePath());
}
public List<MyFile> getChildFiles() {
return childFiles;
}
public void setChildFiles(List<MyFile> childFiles) {
this.childFiles = childFiles;
}

}
------------------------------------------------------------------------------

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.junit.Test;
public class TestFile {
@Test
public void fileTest() {
MyFile myFile = new MyFile("D:\\迅雷下载");
getAllChildFiles(myFile);
printFile(myFile);
}
@Test
public void FileTest() {
MyFile srcFile = new MyFile("D:\\迅雷下载\\activiti-6.0.0");
MyFile targetFile = new MyFile("D:\\迅雷下载\\activiti-6.0.1");
try {
getAllChildFiles(srcFile);
File(srcFile,targetFile);
} catch (Exception e) {
e.printStackTrace();
}
}

public void getAllChildFiles(MyFile myFile) {
myFile.setWritable(true,true);
File[] files = myFile.listFiles();
List<MyFile> childFiles = new ArrayList<MyFile>();
for (File file : files) {
MyFile mf = new MyFile(file);
childFiles.add(mf);
if(mf.isDirectory()) {
getAllChildFiles(mf);
}
}
myFile.setChildFiles(childFiles);
}

public void printFile(MyFile myFile) {
System.out.println(myFile.getAbsolutePath());
System.out.println("====>"+myFile.getName());
List<MyFile> childFiles = myFile.getChildFiles();
if(childFiles != null && childFiles.size() > 0) {
for (MyFile mf : childFiles) {
printFile(mf);
}
}
}

public void File(MyFile srcFile,MyFile targetFile) throws Exception {
if(srcFile.isDirectory()) {
targetFile.mkdirs();
}else {
FileInputStream fis = new FileInputStream(srcFile);
FileOutputStream fos = new FileOutputStream(targetFile);
byte[] buffer = new byte[1024];
int len = 0;
while((len = fis.read(buffer)) != -1) {
fos.write(buffer,0,len);
}
fis.close();
fos.close();
}
List<MyFile> srcChildFiles = srcFile.getChildFiles();
List<MyFile> targetChidFiles = new ArrayList<MyFile>();
if(srcChildFiles != null && srcChildFiles.size() > 0) {
for (MyFile srcf : srcChildFiles) {
StringBuilder targFilePath = new StringBuilder(targetFile.getAbsolutePath());
targFilePath.append(MyFile.separator).append(srcf.getName());
System.out.println(targFilePath.toString());
MyFile targf = new MyFile(targFilePath.toString());
targetChidFiles.add(targf);
File(srcf,targf);
}
}
targetFile.setChildFiles(targetChidFiles);
}

}
希望能帮助到你,谢谢!!

㈡ Java代码拷贝文件夹 注:复制文件夹

Java代码复制文件夹时,则需要利用Flie类在目标文件夹中创建相应的目录,并且使用递归方法,代码如下:

importjava.io.*;
/**
*复制文件夹或文件夹
*/
publicclassCopyDirectory{
//源文件夹
staticStringurl1="F:/photos";
//目标文件夹
staticStringurl2="D:/tempPhotos";
publicstaticvoidmain(Stringargs[])throwsIOException{
//创建目标文件夹
(newFile(url2)).mkdirs();
//获取源文件夹当前下的文件或目录
File[]file=(newFile(url1)).listFiles();
for(inti=0;i<file.length;i++){
if(file[i].isFile()){
//复制文件
File(file[i],newFile(url2+file[i].getName()));
}
if(file[i].isDirectory()){
//复制目录
StringsourceDir=url1+File.separator+file[i].getName();
StringtargetDir=url2+File.separator+file[i].getName();
Directiory(sourceDir,targetDir);
}
}
}
//复制文件
publicstaticvoidFile(FilesourceFile,FiletargetFile)
throwsIOException{
//新建文件输入流并对它进行缓冲
FileInputStreaminput=newFileInputStream(sourceFile);
BufferedInputStreaminBuff=newBufferedInputStream(input);

//新建文件输出流并对它进行缓冲
FileOutputStreamoutput=newFileOutputStream(targetFile);
BufferedOutputStreamoutBuff=newBufferedOutputStream(output);

//缓冲数组
byte[]b=newbyte[1024*5];
intlen;
while((len=inBuff.read(b))!=-1){
outBuff.write(b,0,len);
}
//刷新此缓冲的输出流
outBuff.flush();

//关闭流
inBuff.close();
outBuff.close();
output.close();
input.close();
}
//复制文件夹
publicstaticvoidDirectiory(StringsourceDir,StringtargetDir)
throwsIOException{
//新建目标目录
(newFile(targetDir)).mkdirs();
//获取源文件夹当前下的文件或目录
File[]file=(newFile(sourceDir)).listFiles();
for(inti=0;i<file.length;i++){
if(file[i].isFile()){
//源文件
FilesourceFile=file[i];
//目标文件
FiletargetFile=newFile(newFile(targetDir).getAbsolutePath()+File.separator+file[i].getName());
File(sourceFile,targetFile);
}
if(file[i].isDirectory()){
//准备复制的源文件夹
Stringdir1=sourceDir+"/"+file[i].getName();
//准备复制的目标文件夹
Stringdir2=targetDir+"/"+file[i].getName();
Directiory(dir1,dir2);
}
}
}
}

㈢ java文件复制(bufferedreader读取一个文件内容,用bufferedwriter 写入到另一个文件)

可以通过BufferedReader 流的形式进行流读取,之后通过readLine方法获取到每行的内容,之后通过bufferedwriter (如:OutputStreamWriter)。
BufferedReader bre = null;
OutputStreamWriter pw = null;//定义一个流
try {
String file = "D:/test/test.txt";
bre = new BufferedReader(new FileReader(file));//此时获取到的bre就是整个文件的缓存流
pw = new OutputStreamWriter(new FileOutputStream(“D:/test.txt”),"GBK");//确认流的输出文件和编码格式,此过程创建了“test.txt”实例
while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环
{
pw.write(str );//将要写入文件的内容,写入到新文件
};
pw.close();//关闭流
bre .close();//关闭流
备注:文件流用完之后必须及时通过close方法关闭,否则会一直处于打开状态,直至程序停止,增加系统负担。

㈣ 请问把java安装以后的整个文件夹复制到别的电脑里面能用吗

不可能,一定要 安装,他会修改IE和系统的某些属性,所以要完全安装
你下载的100多M可能是JDK,在公司用JDK是要开发,难道作为一个程序员你们公司连JDK都不让你们装那你们怎么编程
如果你不是程序员只是要用一些JAVA程序那么可以不装
WINDOWS默认带有JRE可以执行JAVA程序
(JRE是执行JAVA程序,JDK是JAVA变成用的环境)

阅读全文

与javaio文件复制相关的资料

热点内容
压缩机功率型号 浏览:559
PLC程序算法 浏览:971
物流程序员好不好 浏览:546
插值算法vb 浏览:926
androidwebview报错 浏览:241
中国什么时候才能有自己的服务器 浏览:764
ps3联机服务器怎么用 浏览:670
服务器nfs服务是什么 浏览:95
java虚拟机直接编译 浏览:608
javaaop实现 浏览:61
java双向通信 浏览:513
mps430超低功耗单片机答案 浏览:899
夫妻数学算法中大奖 浏览:399
nmake不是内部命令 浏览:779
如何创建社区ppoe虚拟服务器 浏览:516
java模拟线程并发 浏览:762
一个云服务器能有几个实例 浏览:191
如何在服务器压缩zip格式 浏览:87
去除数组中重复元素的算法 浏览:998
巴士之星安卓如何玩 浏览:652