2015-01-21 25 views
-2

這是一些代碼,我發現它查看文件夾中的文件xor會轉換文件並將其輸出。基於我的搜索,我相信它是java但它不運行,我得到的只是錯誤。XOR在文件夾中轉換jpeg

final Path indir = Paths.get("C:\\Temp\\crin"); 
final Path outdir = Paths.get("C:\\Temp\\crout"); 
final List<Path> contents = new ArrayList<>(); 
Files.newDirectoryStream(indir).forEach(contents::add); 
for (final Path p : contents) { 
    final byte[] arr = Files.readAllBytes(p); 
    for (int i = 0; i < arr.length; i++) 
     arr[i] ^= 0x42; 
    Files.write(outdir.resolve(p.getFileName()), arr); 
} 

我試試這個在cmd並獲得

javac decode.java 

ecode.java:1: error: class, interface, or enum expected 
final Path indir = Paths.get("C:\\Temp\\crin"); 
    ^
decode.java:2: error: class, interface, or enum expected 
final Path outdir = Paths.get("C:\\Temp\\crout"); 
    ^
decode.java:3: error: class, interface, or enum expected 
final List<Path> contents = new ArrayList<>(); 
    ^
decode.java:4: error: class, interface, or enum expected 
Files.newDirectoryStream(indir).forEach(contents::add); 
^ 
decode.java:5: error: class, interface, or enum expected 
for (final Path p : contents) { 
^ 
decode.java:5: error: class, interface, or enum expected 
for (final Path p : contents) { 
     ^
decode.java:6: error: class, interface, or enum expected 
    final byte[] arr = Files.readAllBytes(p); 
     ^
decode.java:7: error: class, interface, or enum expected 
    for (int i = 0; i < arr.length; i++) 
    ^
decode.java:7: error: class, interface, or enum expected 
    for (int i = 0; i < arr.length; i++) 
        ^
decode.java:7: error: class, interface, or enum expected 
    for (int i = 0; i < arr.length; i++) 
            ^
decode.java:9: error: class, interface, or enum expected 
    Files.write(outdir.resolve(p.getFileName()), arr);} 
    ^
decode.java:9: error: class, interface, or enum expected 
    Files.write(outdir.resolve(p.getFileName()), arr);} 
                ^
12 errors 

這段代碼被描述爲工作,所以如果我錯了,代碼不是java的是什麼,如果是java的什麼我做錯了嗎?

更新

嘗試了更新的代碼越來越少的錯誤,現在,我現在得到這個

javac decode.java 
decode.java:13: error: ')' expected 
      Files.newDirectoryStream(indir).forEach(contents::add); 
                  ^
decode.java:13: error: illegal start of expression 
      Files.newDirectoryStream(indir).forEach(contents::add); 
                  ^
decode.java:13: error: ';' expected 
      Files.newDirectoryStream(indir).forEach(contents::add); 
                   ^
3 errors 
+0

該代碼屬於哪個'class'的什麼'方法? – 2015-01-21 03:24:41

回答

0

至少,你需要輸入你使用的類。您需要創建一個類,並且它需要包含一個main()方法。喜歡的東西,

import java.nio.file.Files; 
import java.nio.file.Path; 
import java.nio.file.Paths; 
import java.util.ArrayList; 
import java.util.List; 

public class decode { // <-- by convention, should be Decode 
    public static void main(String[] args) { 
     final Path indir = Paths.get("C:\\Temp\\crin"); 
     final Path outdir = Paths.get("C:\\Temp\\crout"); 
     final List<Path> contents = new ArrayList<>(); 
     try { 
      Files.newDirectoryStream(indir).forEach(contents::add); 
      for (final Path p : contents) { 
       final byte[] arr = Files.readAllBytes(p); 
       for (int i = 0; i < arr.length; i++) 
        arr[i] ^= 0x42; 
       Files.write(outdir.resolve(p.getFileName()), arr); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

我還沒有運行以上代碼,你需要將自己的文件添加到C:\Temp\crin\的代碼讀取它們。

+0

感謝您的幫助,嘗試了您的代碼,仍然收到錯誤。任何援助,將不勝感激 – 2015-01-21 12:01:15

+0

您發佈的代碼需要java 8. – 2015-01-21 12:33:41

+0

非常感謝 – 2015-01-21 17:46:50