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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. /*
  2. * 拷贝图片,我写的是默认路径如果想拷贝D盘下的图片应该怎么拷贝?默认路径下我也没拷贝出来?怎么回事?
  3. */
  4. import java.io.*;
  5. public class ReaderStream {


  6.         public static void main(String[] args) {
  7.                 FileInputStream fis=null;
  8.                 FileOutputStream fos=null;
  9.                 try {
  10.                         fis=new FileInputStream("1.jpg");
  11.                         fos=new FileOutputStream("2.jpg");
  12.                         byte[] buf=new byte[1024];
  13.                         int len=0;
  14.                         while((len=fis.read(buf))!=-1){
  15.                                 fos.write(buf,0,len);
  16.                         }
  17.                 } catch (IOException e) {

  18.                         throw new RuntimeException("复制文件失败");
  19.                 }
  20.                 finally{
  21.                         try {
  22.                                 if(fis!=null)
  23.                                         fis.close();
  24.                         } catch (IOException e) {
  25.                                 // TODO Auto-generated catch block
  26.                                 throw new RuntimeException("关闭读取文件失败");
  27.                         }
  28.                         try {
  29.                                 if(fos!=null)
  30.                                         fos.close();
  31.                         } catch (IOException e) {
  32.                                 // TODO Auto-generated catch block
  33.                                 throw new RuntimeException("关闭写入文件失败");
  34.                         }
  35.                 }

  36.         }
  37. }

复制代码


11 个回复

倒序浏览
你打开你创建的项目你就会发现奇迹
回复 使用道具 举报
D盘下的文件就要把路径带上:fis=new FileInputStream("D:\\1.jpg"); eclipse工程的默认目录是你指定的,可以在工程名称上鼠标右键-->show in-->system explorer 看到
回复 使用道具 举报
本帖最后由 洛漠O_o 于 2014-8-6 23:05 编辑
  1. public static void main(String[] args) throws IOException {
  2.                 BufferedReader freader = null;
  3.                 BufferedWriter fwriter = null;
  4.                 String path = ClassLoader.getSystemResource("com/itheima").toString();// 1.拿到文件的相对路径
  5.                 System.out.println(path);
  6.                 path = path.substring(5, path.length());// 2.对路径信息进行处理
  7.                 System.out.println(path);
  8.                 path = path.replace("bin", "src");
  9.                 System.out.println(path);
  10.                 File inFile = new File(path + "/a.txt");// 3.打开读取文件
  11.                 File outFile = new File(path + "/b.txt");// 4.打开输出文件
  12.                 freader = new BufferedReader(new FileReader(inFile));// 5.创建读取文件缓冲流
  13.                 fwriter = new BufferedWriter(new FileWriter(outFile));// 6.创建输出文件缓冲流
  14.                 while (freader.ready()) {
  15.                         String line = freader.readLine();// 拿到信息
  16.                         char[] ch = line.toCharArray();// 获取字符数组
  17.                         Arrays.sort(ch);// 排序
  18.                         System.out.println(ch);
  19.                         fwriter.write(new String(ch));// 输出排序后信息
  20.                         fwriter.flush();
  21.                 }

  22.                 fwriter.close();
  23.                 freader.close();
  24.         }
复制代码

/*打印结果file:/E:/work/exam/bin/com/itheima
/E:/work/exam/bin/com/itheima
/E:/work/exam/src/com/itheima
*/
/*========================================*/代码添加以后,在编辑器里修改就出问题!在这里写了,
  String path = ClassLoader.getSystemResource("com/itheima").toString();// 拿到包的路径
                path = path.substring(5, path.length());// 对路径处理使其标准化
                path = path.replace("bin", "src");//看你工程下,是有这两个文件夹的
回复 使用道具 举报
fantacyleo 发表于 2014-8-6 22:41
D盘下的文件就要把路径带上:fis=new FileInputStream("D:\\1.jpg"); eclipse工程的默认目录是你指定的,可 ...

复制到D盘成功了!但复制后的图片要远远大于以前的图片,而且打不开是怎么回事啊?
回复 使用道具 举报
洛漠O_o 发表于 2014-8-6 22:58
/*打印结果file:/E:/work/exam/bin/com/itheima
/E:/work/exam/bin/com/itheima
/E:/work/exam/src/com/it ...

复制到D盘成功了!但复制后的图片要远远大于以前的图片,而且打不开是怎么回事啊?
回复 使用道具 举报
yang649981273 发表于 2014-8-7 10:12
复制到D盘成功了!但复制后的图片要远远大于以前的图片,而且打不开是怎么回事啊? ...

不会吧,我拿你的代码直接运行,一切正常 啊。你后来又怎么改代码了?把改完的代码发出来看一下
回复 使用道具 举报
fantacyleo 发表于 2014-8-7 10:59
不会吧,我拿你的代码直接运行,一切正常 啊。你后来又怎么改代码了?把改完的代码发出来看一下 ...
  1. import java.io.*;

  2. /*
  3. * 拷贝图片
  4. */
  5. public class ReaderStream {


  6.         public static void main(String[] args) {
  7.                 FileInputStream fis=null;
  8.                 FileOutputStream fos=null;
  9.                 try {
  10.                         fis =new FileInputStream("E:\\1.jpg");
  11.                         fos=new FileOutputStream("E:\\2.jpg");
  12.                         byte[] buf=new byte[1024];
  13.                         int len=0;
  14.                         while((len=fis.read())!=-1){
  15.                                 fos.write(buf,0,len);
  16.                         }
  17.                 } catch (IOException e) {
  18.                         // TODO Auto-generated catch block
  19.                         throw new RuntimeException("复制异常");
  20.                 }
  21.                 finally{
  22.                         if(fis!=null)
  23.                                 try {
  24.                                         fis.close();
  25.                                 } catch (IOException e) {
  26.                                         // TODO Auto-generated catch block
  27.                                         throw new RuntimeException("关闭读入异常");
  28.                                 }
  29.                         if(fos!=null)
  30.                                 try {
  31.                                         fos.close();
  32.                                 } catch (IOException e) {
  33.                                         // TODO Auto-generated catch block
  34.                                         throw new RuntimeException("关闭读入异常");
  35.                                 }
  36.                
  37.                 }
  38.         }
  39. }
复制代码
回复 使用道具 举报

你为什么把fis.read(buf)中的buf给去掉了,难怪。。。去掉之后,返回值就不是读取的字节数,而是单个字节,然后你又把buf中的垃圾值不断写入文件,源文件有多少字节就写入多少次
回复 使用道具 举报
你不是建的有项目么,那就刷新
回复 使用道具 举报
yang649981273 发表于 2014-8-7 10:15
复制到D盘成功了!但复制后的图片要远远大于以前的图片,而且打不开是怎么回事啊? ...
  1. FileInputStream fis=null;
  2.          FileOutputStream fos=null;
  3.          try {
  4.                  String path = ClassLoader.getSystemResource("com/itheima").toString();// 1.拿到文件的相对路径
  5.                      System.out.println(path);
  6.                      path = path.substring(5, path.length());// 2.对路径信息进行处理
  7.                      System.out.println(path);
  8.                      path = path.replace("bin", "src");
  9.                      System.out.println(path);
  10.                  fis=new FileInputStream(path + "/2014-08-05_150729111.jpg");
  11.                  fos=new FileOutputStream(path + "/b.jpg");
  12.                  byte[] buf=new byte[1024];
  13.                  int len=0;
  14.                  while((len=fis.read(buf))!=-1){
  15.                          fos.write(buf,0,len);
  16.                  }
  17.          } catch (IOException e) {

  18.                  throw new RuntimeException("复制文件失败");
  19.          }
  20.          finally{
  21.                  try {
  22.                          if(fis!=null)
  23.                                  fis.close();
  24.                  } catch (IOException e) {
  25.                          throw new RuntimeException("关闭读取文件失败");
  26.                  }
  27.                  try {
  28.                          if(fos!=null)
  29.                                  fos.close();
  30.                  } catch (IOException e) {
  31.                          throw new RuntimeException("关闭写入文件失败");
  32.                  }
  33.          }
复制代码

====================
图片用字节流……
这个我试了,可以

点评

我用这个本来是复制的文本文件。 当时忽视了……呵呵  发表于 2014-8-7 19:36
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马