今天在《Java学习笔记》中看到一段程序,关于输入输出流的复制程序
这是IO 类的代码
1 packagecc.openhome;2
3 import java.io.*;4
5 public classIO {6 public static void dump(InputStream src, OutputStream dest) throwsIOException {7 try (InputStream input = src; OutputStream output =dest) {8 byte[] data = new byte[1024];9 int length = -1;10 while((length=input.read(data)) !=-1){11 output.write(data,0,length);12 }13 }14 }15 }
这个是copy类的代码
packagecc.openhome;import java.io.*;public classCopy {public static void main(String[] args) throwsIOException {
IO.dump(new FileInputStream(args[0]),new FileOutputStream(args[1])
);
}
}
这代码在eclipse下是无法运行的,显而易见,因为没有 输入跟输出文件,单纯的运行会抛数组越界错误
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0at cc.openhome.Copy.main(Copy.java:7
虽然我也不懂什么原因,书上是让我们用命令行的方式使用
Windows 下可以直接
> java cc.openhome.Copy 源文件 目标文件
但是在Mac 下这么用会一直报错
必须把包"cc.openhome"折叠变成"/cc/openhome"才可以,Mac 跟 Windows 的包处理形式不一,反正在Mac下得这么用
而且,你从哪里找的"cc.openhome"这个包呢?你以为可以在用户目录加下,用路径访问?
比如
java /Users/cafe3165/Documents/workspace/Tenth_1/bin/cc/openhome/Copy 源文件位置 目标文件位置
这样还是不行的,还是找不到主类(好坑)
😂对了,我的文件夹是放在eclipse 的workspace下的,.java文件编译成功后会生成.class文件放在bin中
进入bin目录下后
再运行
bin cafe3165$ java cc/openhome/Copy /Users/cafe3165/Desktop/Hello.java /Users/cafe3165/Desktop/Hello.txt
这时候就能在桌面上看到
果然不能过度以来IDE 连javac 跟java 都不会。。。。