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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 清心玉质 中级黑马   /  2013-8-15 10:41  /  1247 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

下面的代码 为什么执行后在itcastlib文件夹里出现的是defaultpackage,不是我要加密的文件呢?加密的文件我是放在defaultpackage里的。参数在本段程序下面。
class MyClassLoader
{
public static void main(String[] args) throws Exception
{
  String srcPath = args[0];
  String destDir = args[1];//目标的目录
  FileInputStream fis = new FileInputStream(srcPath);//在这里,如果用绝对路径可以直接用,用相对路径需要计算,为了方便这里用了相对路径(在工程下面)
  System.out.println(srcPath);
  String destFileName = srcPath.substring(srcPath.lastIndexOf("\\")+1);//目标文件名
  System.out.println(destFileName);
  String destPath = destDir +"\\"+ destFileName;
  System.out.println(destPath);
  FileOutputStream fos = new FileOutputStream(destPath);
  cypher(fis,fos);
  fis.close();
  fos.close();

}
private static void cypher(InputStream ips,OutputStream ops)throws Exception{

int b= -1;
while((b = ips.read())!=-1)
  {
   ops.write(b^0xff);
  }
}
}

配置的两个参数:C:\Users\Administrator\Workspaces\ClassLoaderAttachment.class   itcastlib

评分

参与人数 1技术分 +1 收起 理由
张智文 + 1

查看全部评分

6 个回复

倒序浏览
程序没有问题.  应该是你程序运行后,没有刷新目标文件夹.   
回复 使用道具 举报
黑马伍哲沂 发表于 2013-8-15 19:30
程序没有问题.  应该是你程序运行后,没有刷新目标文件夹.

刷新了 却刷出来default package。。。

回复 使用道具 举报
首先,程序并没有问题.我试运行了几次.换不同路径,都没有问题.
觉得你可能出现问题的地方,我写在注释里.你仔细看看.
  1. package com.itheima.domain;

  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FileOutputStream;
  5. import java.io.InputStream;
  6. import java.io.OutputStream;

  7. public class MyClassLoader {
  8.         public static void main(String[] args) throws Exception {
  9.                 String srcPath = args[0];
  10.                 String destDir = args[1];
  11.                 FileInputStream fis = new FileInputStream(srcPath);
  12.                 System.out.println(srcPath);
  13.                
  14.                 String destFileName = srcPath.substring(srcPath.lastIndexOf("\\") + 1);
  15.                 System.out.println(destFileName);
  16.                
  17.                 String destPath = destDir + "\\" + destFileName;
  18.                 System.out.println(destPath);
  19.                
  20.                 //生成目标文件夹,destDir为相对路径,此处相对当前工程.所以生成的文件夹
  21.                 //会在你当前工程下面.如果此处代码不加,则要手动在当前工程下添加该目录,即
  22.                 //ltcastlib文件夹.
  23.                 File file = new File(destDir);
  24.                 file.mkdirs();
  25.                
  26.                 //加密后的文件会出现在上面生成的文件夹内.我不太明白你说的加密文件放在defaultpackage里,
  27.                 //如果你是想把加密后的class放到你自己指定的文件夹下.上面的destDir需要给绝对路径.
  28.                 //也就是程序运行配置的第二个参数,应该给绝对路径.
  29.                 FileOutputStream fos = new FileOutputStream(destPath);
  30.                 cypher(fis, fos);
  31.                 fis.close();
  32.                 fos.close();

  33.         }

  34.         private static void cypher(InputStream ips, OutputStream ops)
  35.                         throws Exception {

  36.                 int b = -1;
  37.                 while ((b = ips.read()) != -1) {
  38.                         ops.write(b ^ 0xff);
  39.                 }
  40.         }
  41. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1 赞一个!

查看全部评分

回复 使用道具 举报
黑马伍哲沂 发表于 2013-8-16 21:16
首先,程序并没有问题.我试运行了几次.换不同路径,都没有问题.
觉得你可能出现问题的地方,我写在注释里.你仔 ...

真心感谢你的指点。 我把目标路径也设置成绝对的了,运行后刷新却没有刷新出那个加密文件,但是我到目标文件下看的时候却发现有了,不知道为什么
回复 使用道具 举报
清心玉质 发表于 2013-8-16 22:05
真心感谢你的指点。 我把目标路径也设置成绝对的了,运行后刷新却没有刷新出那个加密文件,但是我到目标 ...

不在现场,不能知道你的实际情况.所以,也不知道问题在哪.但程序是没有问题,主要应该还是在路径上.
建议你找点关于路径的资料看看.

以后的学习里,还有很多地方会用到路径.
回复 使用道具 举报
黑马伍哲沂 发表于 2013-8-17 18:04
不在现场,不能知道你的实际情况.所以,也不知道问题在哪.但程序是没有问题,主要应该还是在路径上.
建议你 ...

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