2016-05-08 9 views
0

このコードでは、各文字の後に100という数字が追加されます。単純なJavaの暗号化/復号化 - inputFileNameは存在しません

import java.io.*; 
import java.io.IOException; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 

public class FileEncryptionAndDecryption { 
    public static void main(String[] args) 
    throws IOException { 
     String inputFileName = "DemoFile"; 
     String encryptedFile = "Encrypted File"; 
     String decryptedFile = "Decrypted File"; 
     encryptFile(inputFileName, encryptedFile); 
     FileDecryption.decryptFile(encryptedFile, decryptedFile); 
    } 
    public static void encryptFile(String inputFileName, 
     String encryptedFile) 
    throws IOException, FileNotFoundException { 
     File file1 = new File(inputFileName); 

     FileInputStream fis = new FileInputStream(file1); 
     FileOutputStream fos = new FileOutputStream(encryptedFile); 
     int[] encrypt = { 
      100 
     }; 

     DataOutputStream outputFile = 
      new DataOutputStream(new FileOutputStream("Encrypt.dat")); 

     for (int i = 0; i < encrypt.length; i++) 
      fos.write(encrypt[i] + 100); 

     System.out.println("Encryption done."); 

     outputFile.close(); 
    } 
} 

class FileDecryption { 
    public static void decryptFile(String inputFileName, 
     String encryptedFile) 
    throws IOException, FileNotFoundException { 
     File file1 = new File(inputFileName); 

     FileInputStream fis = new FileInputStream(file1); 
     FileOutputStream fos = new FileOutputStream(encryptedFile); 
     int[] decrypt = { 
      0 
     }; 

     DataInputStream inputFile = 
      new DataInputStream(new FileInputStream("Encrypt.dat")); 

     for (int i = 0; i < decrypt.length; i--) 
      fos.write(decrypt[i] - 100); 

     System.out.println("Decryption done."); 

     inputFile.close(); 


} 
} 

「デモファイル」が存在するためには何が必要ですか?良い、簡単なテストコードは何でしょうか?そしてコメントはどこに置くべきですか?私は不必要なコメントがたくさんあることを望んでいませんが、どのコメントが必要なのか分かりません。

+0

"100を追加しますか?"だから "abc" --- "" a100b100c100 "? 1つのコメントは、文字ではなく整数でしか機能しないことを示すことになると思います。 –

+1

短い機能(5〜7行)とともに、本当に記述的な変数と関数名を使用すると、コメントを置き換えるのにかなり時間がかかります。あなたの命名はかなり良いように見えます。コメントの問題は、コードが変更されるとすぐに、それらはもはや意味がなくなり、正しいことです。 – zaph

+0

これはコードレビュー時に行う必要があります。そのサイトは、動作するコードのクリーンアップ(コメント)に関するものです。このサイトはプログラミングに関する質問を解決するためのサイトです。 – nhouser9

答えて

0

DemoFileを作成するには、テキストエディタを使用して、暗号化するテキストを入力します。私はDemoFile.txtを./data/というサブフォルダに入れます。

./data/DemoFile.txt

abc 

それからちょうど/ファイル名。拡張子コードにパスを入れ:また

String inputFileName = "./data/DemoFile.txt"; 

、以下の用途一方のFileInputStreamオブジェクトに対してループあなたが意図したものだと思う暗号化と復号化を行うために文字単位でファイルを読み込みます。

 public static void main (String[] args) throws IOException { 
      String inputFileName = "./data/DemoFile.txt"; 
      String encryptedFile = "./data/Encrypted.txt"; 
      String decryptedFile = "./data/Decrypted.txt"; 
      encryptFile     (inputFileName, encryptedFile); 
      FileDecryption.decryptFile (encryptedFile, decryptedFile); 
     } 

     public static void encryptFile (String inputFileName, String encryptedFile) 
      throws IOException, 
      FileNotFoundException { 
      File file1 = new File (inputFileName); 

      FileInputStream  fis = new FileInputStream (file1); 
      FileOutputStream fos = new FileOutputStream (encryptedFile); 
      int[] encrypt = { 100 }; 

      DataOutputStream outputFile = new DataOutputStream (new FileOutputStream (encryptedFile)); 

      //for (int i = 0; i < encrypt.length; i++) { 
      int r; 
      while ((r = fis.read()) != -1) { 
       char ch = (char) r; 
       System.out.println ("Reading ["+ ch + "]"); 
       fos.write (ch+encrypt[0]); 
       System.out.println ("Encrypted ["+ ch+encrypt[0] + "]"); 
      } 

      System.out.println("Encryption done."); 

      outputFile.close(); 
     } 
    } 

    class FileDecryption { 
     public static void decryptFile (String inputFileName, String encryptedFile) 
      throws IOException, 
      FileNotFoundException { 
      File file1 = new File(inputFileName); 

      FileInputStream fis = new FileInputStream(file1); 
      FileOutputStream fos = new FileOutputStream(encryptedFile); 
      int[] decrypt = { 100 }; 

      DataInputStream inputFile = new DataInputStream(new FileInputStream(encryptedFile)); 

      //for (int i = 0; i < decrypt.length; i--) 
      // fos.write(decrypt[i] - 100); 

      int r; 
      while ((r = fis.read()) != -1) { 
       char ch = (char) (r-decrypt[0]); 
       System.out.println ("Reading ["+ ch + "]"); 
       fos.write (ch); 
       System.out.println ("Decrypted ["+ (ch) + "]"); 
      } 

      System.out.println("Decryption done."); 
      inputFile.close(); 

     } 
    } 

これがあなたの質問に答えることを願っています。コードはあなたの目標にあなたを得るのに役立つはずです... adym

関連する問題