首先,程序并没有问题.我试运行了几次.换不同路径,都没有问题.
觉得你可能出现问题的地方,我写在注释里.你仔细看看.- package com.itheima.domain;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.InputStream;
- import java.io.OutputStream;
- public 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);
-
- //生成目标文件夹,destDir为相对路径,此处相对当前工程.所以生成的文件夹
- //会在你当前工程下面.如果此处代码不加,则要手动在当前工程下添加该目录,即
- //ltcastlib文件夹.
- File file = new File(destDir);
- file.mkdirs();
-
- //加密后的文件会出现在上面生成的文件夹内.我不太明白你说的加密文件放在defaultpackage里,
- //如果你是想把加密后的class放到你自己指定的文件夹下.上面的destDir需要给绝对路径.
- //也就是程序运行配置的第二个参数,应该给绝对路径.
- 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);
- }
- }
- }
复制代码 |