有人發帖問下面的程序爲什麼運行會出錯?
The method cypher(InputStream, OutputStream) in the type MyEncoderText is not applicable for the arguments (FileInputStream, FileOutputStream)
package package1; import java.io.*; public class MyEncoderText { public static void main(String[] args) throws Exception { String path0 = args[0]; String path1 = args[1]; FileInputStream in = new FileInputStream(path0); FileOutputStream out = new FileOutputStream(path1); cypher(in, out); System.out.println("結束"); out.close(); } private static void cypher(InputStream inp, OutputStream oup) throws Exception { int len = -1; System.out.println("0: " + len); while ((len = inp.read()) != -1) { System.out.println("1: " + len); oup.write(len);// ^ 102 ^ 91 System.out.println("2: " + len); } System.out.println("3: " + oup); } }
然後,我試了一下,好像沒有問題啊?
有人建議他把cypher方法的參數改爲(FileInputStream inp, FileOutputStream oup),
就這樣結束了這個提問。無聊。
還有那個oup.write(len^ 102 ^ 91);
我開始以爲是類似二進制移位這樣提高效率之類的操作,
結果根本不行!把它註釋掉才能真正地執行復制文件的操作,浪費我時間。
不過這個程序倒是提醒了我關於“在運行的時候傳遞參數”的問題,
寫了一個小程序:
public class TestArgs { public static void main(String[] args) { String Arg1 = args[0]; String Arg2 = args[1]; String Arg3 = args[2]; System.out.println(Arg1); System.out.println(Arg2); System.out.println(Arg3); } }
在cmd小黑窗或者Eclipse中,只要以空格隔開傳遞的參數,
就可以將參數傳遞給程序。
例如:java TestArgs A B C 這樣。
Eclipse就是Run configurations……窗口傳,不截圖了。