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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© aion2013tian 中级黑马   /  2013-12-3 16:00  /  1038 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我想将文件中的路径换成相对路径,想要被创建的文件和.java文件在同一个包中,代码如下:
  1. package Note;

  2. import java.io.BufferedInputStream;
  3. import java.io.BufferedOutputStream;
  4. import java.io.FileInputStream;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;


  7. public class Test8 {
  8.        
  9.         public static void main(String[] args) {
  10.                 //创建读写流对象
  11.                 BufferedOutputStream bos = null;
  12.                 BufferedInputStream bis = null;
  13.                 try {
  14.                        
  15.                         //流对象与文件相关联
  16.                         bis = new BufferedInputStream(new FileInputStream(
  17.                                         "D:/Demo.txt"));
  18.                         bos = new BufferedOutputStream(new FileOutputStream(
  19.                                         "D:/copyDemo.txt"));
  20.                        
  21.                         //循环判断是否还有数据,不断写入目标文件
  22.                         byte[] buf = new byte[1024];
  23.                         while ((bis.read(buf)) != -1) {
  24.                                 bos.write(buf);
  25.                         }
  26.                         bos.flush();
  27.                 } catch (IOException e) {
  28.                         e.toString();
  29.                        
  30.                         //关闭资源
  31.                 } finally {
  32.                         try {
  33.                                 if (bos != null)
  34.                                         bos.close();
  35.                                 System.out.println("写入流已关闭!!!");
  36.                         } catch (IOException ex1) {
  37.                                 ex1.toString();
  38.                         }
  39.                         try {
  40.                                 if (bis != null)
  41.                                         bis.close();
  42.                                 System.out.println("读取流已关闭!!!");
  43.                         } catch (IOException ex2) {
  44.                                 ex2.toString();
  45.                         }
  46.                        
  47.                 }
  48.                 System.out.println("Copy Over!");
  49.                
  50.         }

  51. }
复制代码



评分

参与人数 1技术分 +1 收起 理由
贺奕凯 + 1

查看全部评分

4 个回复

倒序浏览
采用命令编译Java 文件的话,下面的代码可以满足楼主的要求。使用字节码.Resource方法。有进行定位。但如果是使用Eclipse编译工具的话,字节码文件是放在bin文件夹下的,所以会造成不在同一个包下的情况。
  1. package Note;
  2. import java.io.BufferedInputStream;
  3. import java.io.BufferedOutputStream;
  4. import java.io.FileInputStream;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;


  7. public class Test {

  8.         public static void main(String[] args) {
  9.                 // 创建读写流对象
  10.                 BufferedOutputStream bos = null;
  11.                 BufferedInputStream bis = null;

  12.                 String path = Test.class.getResource("\\").toString();
  13.                 String oldPath= path.substring(6, path.length()-3)+"Demo.txt";
  14.                 String newPath = path.substring(6, path.length() - 3) + "copyDemo.txt";
  15.                
  16.                 System.out.println(path);       
  17.                 System.out.println(newPath);
  18.                 System.out.println(oldPath);
  19.                 try {

  20.                         // 流对象与文件相关联
  21.                         bis = new BufferedInputStream(new FileInputStream(oldPath));
  22.                         bos = new BufferedOutputStream(new FileOutputStream(
  23.                                         newPath));

  24.                         // 循环判断是否还有数据,不断写入目标文件
  25.                         byte[] buf = new byte[1024];
  26.                         while ((bis.read(buf)) != -1) {
  27.                                 bos.write(buf);
  28.                         }
  29.                         bos.flush();
  30.                 } catch (IOException e) {
  31.                         e.toString();

  32.                         // 关闭资源
  33.                 } finally {
  34.                         try {
  35.                                 if (bos != null)
  36.                                         bos.close();
  37.                                 System.out.println("写入流已关闭!!!");
  38.                         } catch (IOException ex1) {
  39.                                 ex1.toString();
  40.                         }
  41.                         try {
  42.                                 if (bis != null)
  43.                                         bis.close();
  44.                                 System.out.println("读取流已关闭!!!");
  45.                         } catch (IOException ex2) {
  46.                                 ex2.toString();
  47.                         }

  48.                 }
  49.                 System.out.println("Copy Over!");

  50.         }

  51. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
贺奕凯 + 1

查看全部评分

回复 使用道具 举报
25343215 发表于 2013-12-3 17:06
采用命令编译Java 文件的话,下面的代码可以满足楼主的要求。使用字节码.Resource方法。有进行定位。但如果 ...

我用的就是Eclipse编译的啊
回复 使用道具 举报
本帖最后由 25343215 于 2013-12-3 23:06 编辑
aion2013tian 发表于 2013-12-3 21:58
我用的就是Eclipse编译的啊

那楼主,还需要在把上面的路径更改一下。

现在是定位到Java工程下的bin文件夹下,那么只要把bin文件夹换成src文件夹(通过String里面的方法),那么也能完成楼主的需求。就是变得很麻烦了。



回复 使用道具 举报
下次问题解决了就把类型改成提问结束!谢谢!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马