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

java流复制文件

发布时间:2022-08-18 05:56:24

java中怎么复制一个文件的内容

主要是用到java里面的i/o流。代码例子如下:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

/**
* java读写文件,复制文件
* 读取d:/1.txt文件内容,写入f:/text.txt文件中.
* @author young
*
*/
public class FileWriterTest {
// 读写文件
public static void rwFile(){
FileWriter fw = null;
BufferedReader br = null;
try {
fw = new FileWriter("f:\\text.txt", true);
br = new BufferedReader(new InputStreamReader(
new FileInputStream("d:\\1.txt"), "UTF-8"));
String line = null;
while ((line = br.readLine()) != null) {
System.out.println("文件内容: " + line);
fw.write(line);
fw.flush();
}
br.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fw != null) {
try {
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

public static void main(String[] args) {
rwFile();
}
}
首先在D盘新建文件1.txt,输入任意内容。然后执行java代码即可。

❷ java中的IO流如何复制文件

递归啊,先在复制位置创建一个文件夹与被复制的相同,然后遍历复制文件夹下面的文件,如果文件夹下面还有文件夹,接着创建文件夹遍历复制下面文件

❸ java如何拷贝文件到另一个目录下

下面列举出4种方式:

1、使用FileStreams复制

这是最经典的方式将一个文件的内容复制到另一个文件中。 使用FileInputStream读取文件A的字节,使用FileOutputStream写入到文件B。正如你所看到的我们执行几个读和写操作try的数据,所以这应该是一个低效率的,下一个方法我们将看到新的方式。 这是第一个方法的代码:

❹ 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 输入输出流的复制文件的问题

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

❻ java怎么用IO流把一个文件(SQLite数据库文件)复制到另一个位置

File src=new File("原文件地址");
InputStream inps = new FileInputStream(file) ;//输入流
File des = new File("目的文件地址") ;
OutputStream ops = new FileOutputStream(des) ;//输出流
if(!des.isExist()){//不存在,新建
des.createNewFile() ;
}
int temp = 0 ;
while((temp=inps.write!)=-1){//读入,判断是否读取结束
ops.write(temp) ;//写入
}
try{
ops.flush() ;
ops.close() ;
inps.close() ;
}catch(Exception e){
...
}
纯手打,可能会有些错误,但是总体思路是正确的,具体的可以参考JavaIO包!看看API

❼ 使用Java文件流将"E:\\kj.txt"文件中的内容复制到"D:\\new.txt".

importjava.io.*;
publicclass
{
publicstaticvoidmain(Stringargs[])throwsIOException
{
inti;
FileReaderfr;
FileWriterfw;
try
{
fr=newFileReader("E:\kj.txt");
}
catch(FileNotFoundExceptione)
{
System.out.println("notfoundthisfile");
return;
}
try
{
fw=newFileWriter("D:\new.txt");
}
catch(FileNotFoundExceptione)
{
System.out.println("error");
return;
}catch(IOExceptione){
System.out.println("wrong");
return;
}
try
{
i=fr.read();
while(i!=-1)
{
fw.write(i);
i=fr.read();
}

fr.close();
fw.close();
}
catch(IOExceptione)
{
System.out.println("error");
}
}
}

❽ JAVA IO流复制文件内容

呃,简单地说是因为你对同一个文件同一次读取进行两次,第一次while读取完后,你本意是仅仅想看看里面到底是什么东西,所以你命令fis一个字节一个字节地往下读,直到fis读取到文件的末尾(此时while里面的!=-1条件为假),但事实上是,你认为你在看,其实你是在读。你看完后不满足又想看一次,你让fis梅开二度,又用另一个while去命令同一个fis一个字节一个字节的往下读,但早在第一个while结束后,fis已经卡在了文件的末尾了,再命令fis去read返回的永远都是-1,所以此时在第二个while语句中fis执行第一次read时就跳出来了,为啥?因为fis.read()返回为-1啊。所以C就压根没赋到,而且即便赋值,C也只能装下一个char啊。
至于这么解决,思路如下:你是通过fis一个字节一个字节地读取给一个int类型变量date,那么既然date可以打印出,可以赋给char c,自然可以被写到文件里面去;那么你看看fos能不能一个字节一个字节地写文件,这样在while中,fis每读一个字节,fos就把它写文件(想想一下这个效率吧~~)。不过一定要记住,同一个fis不可能两次踏进同一个文件两次以上,一个while就玩完!!

❾ 用java中的输入输出流编写复制文件程序。

给你一个复制的方法.前面判断逻辑相信你自己能搞定吧.
public static long forChannel(File f1, File f2) throws Exception { long time = new Date().getTime(); int length = 2097152; FileInputStream in = new FileInputStream(f1); FileOutputStream out = new FileOutputStream(f2); FileChannel inC = in.getChannel(); FileChannel outC = out.getChannel(); ByteBuffer b = null; while (true) { if (inC.position() == inC.size()) { inC.close(); outC.close(); return new Date().getTime() - time; } if ((inC.size() - inC.position()) < length) { length = (int) (inC.size() - inC.position()); } else length = 2097152; b = ByteBuffer.allocateDirect(length); inC.read(b); b.flip(); outC.write(b); outC.force(false); } }
直接调用该方法.f1 是需要复制的文件,f2是复制到目标文件

阅读全文

与java流复制文件相关的资料

热点内容
随车拍app绑定什么设备 浏览:893
方维团购系统源码 浏览:988
linux反弹shell 浏览:152
打印机接口加密狗还能用吗 浏览:299
二板股票源码 浏览:446
度人经pdf 浏览:901
怎么配置android远程服务器地址 浏览:959
java程序员看哪些书 浏览:942
什么app可以免费和外国人聊天 浏览:795
pdf手写笔 浏览:182
别永远伤在童年pdf 浏览:990
爱上北斗星男友在哪个app上看 浏览:421
主力散户派发源码 浏览:671
linux如何修复服务器时间 浏览:61
荣县优途网约车app叫什么 浏览:479
百姓网app截图是什么意思 浏览:229
php如何嵌入html 浏览:817
解压专家怎么传输 浏览:745
如何共享服务器的网络连接 浏览:136
程序员简易表白代码 浏览:170