A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 刘博 于 2011-12-22 17:39 编辑

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

import javax.swing.text.StyledEditorKit.ForegroundAction;

public class Demo3 {
        public static void main(String[] args) throws IOException {
                BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

                String line = br.readLine();
                File f = new File(line);
               
                String[] s = f.list();

                OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("txt1.txt"));

                               
                for (String name : s)
                        osw.write(name.toString() + "\r\n");
                osw.close();

        }

}
这个是将一个文件夹里的文件名复制到一个文件里,可是将文件夹里的文件复制到一个新的文件夹里怎么做呢?

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

8 个回复

正序浏览
张绍成 黑马帝 2011-12-23 20:57:29
9#
不知道是不是这样的:

  1. import java.io.FileInputStream;
  2. import java.io.FileNotFoundException;
  3. import java.io.FileOutputStream;
  4. import java.io.IOException;
  5. import java.sql.Timestamp;
  6. //利用 FileInputStream 来实现输入,利用FileOutputStream 来实现输出,用以实现文件的复制
  7. public class FileCopy {
  8.         public static void main(String[] args) throws Exception {
  9.                 FileInputStream fis = null ;
  10.                 FileOutputStream fos = null ;
  11.                 try {
  12.                         //创建字节输入流
  13.                         fis = new FileInputStream("d:\\JDK.6.Documentation.chm");
  14.                         //创建字节输出流
  15.                         fos = new FileOutputStream("d:\\download\\java help.chm");
  16.                         byte[] bbuf = new byte[1024];
  17.                         int len = 0 ;
  18.                         Timestamp start = new Timestamp(System.currentTimeMillis());
  19.                         System.out.println(start);
  20.                         //循环重输入流中读取数据
  21.                         while((len=fis.read(bbuf))!=-1){
  22.                                 //每读取一次就将数据写入一次,读了多少就写多少
  23.                                 fos.write(bbuf, 0, len);
  24.                         }
  25.                         Timestamp end = new Timestamp(System.currentTimeMillis());
  26.                         System.out.println(end);
  27.                 } catch (IOException e) {
  28.                         // TODO Auto-generated catch block
  29.                         e.printStackTrace();
  30.                 }finally{
  31.                         // 利用 finally 关闭输入输出流。finally 是程序必须执行的部分
  32.                         if(fis!=null){
  33.                                 fis.close();
  34.                         }
  35.                         if(fos!=null){
  36.                                 fos.close();
  37.                         }
  38.                 }
  39.         }
  40. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
是不是还有最简单的方法啊,我写的只有几句代码,不知道对了没??
回复 使用道具 举报
袁泽宇 黑马帝 2011-12-22 17:30:53
7#

  1. import java.io.File;
  2. import java.io.FileInputStream;
  3. import java.io.FileOutputStream;
  4. import java.io.IOException;

  5. public class Exercise2 {
  6.         public static void main(String[] args) throws IOException {
  7.                 File src = DirUtil.getDir();
  8.                 File dest = DirUtil.getDir();
  9.                 copySrc(src,dest);
  10.         }

  11.         private static void copySrc(File src, File dest) throws IOException {
  12.                 File newDir = new File(dest, src.getName());
  13.                 newDir.mkdirs();
  14.                 File[] dir = src.listFiles();
  15.                 for (File files : dir) {
  16.                         if(files.isDirectory())
  17.                                 copySrc(files,newDir);
  18.                         else{
  19.                                 File newFile= new File(newDir,files.getName());
  20.                                 FileInputStream br = new FileInputStream(files);
  21.                                 FileOutputStream bw = new FileOutputStream(newFile);
  22.                                 int i;
  23.                                 byte[] b = new byte[1024];
  24.                                 while((i=br.read(b))!=-1)
  25.                                         bw.write(b,0,i);
  26.                                 br.close();
  27.                                 bw.close();
  28.                         }
  29.                 }
  30.         }
  31. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
你把要想复制的文件夹下的文件,放在输入流中,然后在另一个文件夹路径下 输出流。
回复 使用道具 举报
杨强 黑马帝 2011-12-22 16:26:17
报纸
本帖最后由 杨强 于 2011-12-22 16:26 编辑

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;


public class Demo {

        public static void main(String[] args) throws IOException {
                File src = DirUtil.getDir();
                File dest = DirUtil.getDir();
               
                copyDir(src, dest);
        }

       
        private static void copyDir(File src, File dest) throws IOException {
                File newDir = new File(dest, src.getName());               
                newDir.mkdirs();
               
                File[] subFiles = src.listFiles();                                       
                for(File subFile : subFiles)
                        if (subFile.isDirectory())
                                copyDir(subFile, newDir);
                        else
                                copyFile(subFile, new File(newDir, subFile.getName()));
        }
       
        private static void copyFile(File src, File dest) throws IOException{
                FileInputStream fis = new FileInputStream(src);
                FileOutputStream fos = new FileOutputStream(dest);
                byte[] buf = new byte[1024];
                int len;
                while((len = fis.read(buf)) != -1)
                        fos.write(buf, 0, len);
                fis.close();
                fos.close();
        }

}

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
使用FileInputStream和FileOutputStream对文件存取,将文件最后存储在d:\下。
  1. import java.io.BufferedReader;
  2. import java.io.BufferedWriter;
  3. import java.io.File;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.io.InputStreamReader;
  7. import java.io.OutputStreamWriter;

  8. //add
  9. import java.io.BufferedInputStream;
  10. import java.io.BufferedOutputStream;
  11. import java.io.FileInputStream;

  12. import javax.swing.text.StyledEditorKit.ForegroundAction;

  13. class Demo3 {
  14.         public static void main(String[] args) throws IOException {
  15.                 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

  16.                 String line = br.readLine();
  17.                 File f = new File(line);
  18.                
  19.                 String[] s = f.list();
  20.                                                                
  21.                 OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("txt1.txt"));

  22.                                 
  23.                 for (String name : s)
  24.                         osw.write(name.toString() + "\r\n");
  25.                                                        
  26.                 osw.close();
  27.                 br.close();
  28.                
  29.                 //add
  30.                 copy(f);
  31.         }
  32.         
  33.         //add
  34.                                 public static void copy(File f) throws IOException
  35.                                 {
  36.                                                 File [] files = f.listFiles();
  37.                                                 for(File file: files)
  38.                                                 {
  39.                                                                 if(file.isFile())
  40.                                                                 {
  41.                                                                         BufferedInputStream bufIn = new BufferedInputStream(new FileInputStream(file.getAbsolutePath()));

  42.                                                                         BufferedOutputStream bufOut = new BufferedOutputStream(new FileOutputStream("d:\\"+file.getName()));       
  43.                                                                        
  44.                                                                         int len=0;
  45.                                                                         byte [] buf=new byte[1024];
  46.                                                                         while((len=bufIn.read(buf))!=-1)
  47.                                                                         {
  48.                                                                                         bufOut.write(buf,0,len);
  49.                                                                         }
  50.                                                                         bufIn.close();
  51.                                                                         bufOut.close();
  52.                                                                 }
  53.                                                                 else
  54.                                                                 {
  55.                                                                         copy(file);       
  56.                                                                 }
  57.                                                 }                               
  58.                                 }
  59. }
复制代码
回复 使用道具 举报
刘博 黑马帝 2011-12-22 13:24:54
藤椅
熊明春 发表于 2011-12-22 13:18
这个不复杂,但有点多吧,楼主应该自己多多思考,多多尝试,既然都得到文件名了,那也就可以照本宣科跟着做 ...

思路卡住了,已经想了很久了.继续努力:victory:
回复 使用道具 举报
这个不复杂,但有点多吧,楼主应该自己多多思考,多多尝试,既然都得到文件名了,那也就可以照本宣科跟着做下去啊,
有文件名,有路径,很轻松吧,我呆会就去尝试!楼主也尝试尝试吧!

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马