Advertisement
ibragimova_mariam

2 задание стенография переделала в последний раз

Sep 28th, 2017
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.46 KB | None | 0 0
  1. package zaschita1;
  2. import java.io.File;
  3. import java.util.Scanner;
  4. import java.io.FileWriter;
  5. import java.nio.charset.StandardCharsets;
  6. import java.nio.file.Files;
  7. import java.nio.file.Paths;
  8. import java.util.List;
  9.  
  10. public class Zaschita1 {
  11.  
  12. public static void encoding() throws Exception{ // ok
  13. System.out.print("Encoding: \n");
  14.  
  15. Scanner sc = new Scanner(new File("src//zaschita1//input_word.txt"));
  16. String word = sc.nextLine();
  17. System.out.println("Phrase: " + word);
  18.  
  19. String[] binAscii = new String[word.length()];
  20. for (int i = 0; i < binAscii.length; i++ ){
  21. binAscii[i] = String.format("%16s", Integer.toBinaryString((int) word.charAt(i))).replace(' ', '0');
  22. System.out.println(word.charAt(i) + " " + (int) word.charAt(i) + " " + binAscii[i]);
  23. }
  24.  
  25. StringBuilder binAsciiConcat = new StringBuilder();//add
  26. int binAcounter = 0;// add суммарно сколько в слове бит
  27. for(int i = 0; i < binAscii.length; i ++){//add
  28. binAsciiConcat.append(binAscii[i]);//add
  29. }
  30.  
  31. List<String> lines = Files.readAllLines(Paths.get("src//zaschita1//input_text.txt"), StandardCharsets.UTF_8);
  32. FileWriter writer = new FileWriter("src//zaschita1//output.txt", false);
  33.  
  34. System.out.println("lines size: " + lines.size() + " binAsciiConcat: " + binAsciiConcat.toString());
  35.  
  36. int positionSpace;
  37. StringBuilder substringText = new StringBuilder();
  38. for(int i = 0; i < lines.size(); i ++){//lines.size(); i ++){
  39. substringText.append(lines.get(i));
  40. System.out.println('\n' + "lines: " + i + ": " + substringText.toString());
  41. while(substringText.indexOf(" ") != -1 && (binAcounter != binAsciiConcat.toString().length())){
  42. positionSpace = substringText.indexOf(" ");
  43. System.out.println("index пробела: " + positionSpace);
  44. writer.append(substringText.substring(0, positionSpace + 1));
  45. if(binAsciiConcat.toString().charAt(binAcounter) == '1'){
  46. writer.append(" ");
  47. }
  48. binAcounter++;
  49. substringText.delete(0, positionSpace + 1);
  50. System.out.println("обрезали:" + substringText.toString());
  51. }
  52. if(binAcounter == binAsciiConcat.toString().length()){
  53. writer.append('\u200B');
  54. }
  55. writer.append(substringText.toString() + '\n'); //добавляем хвостик
  56. substringText.delete(0, substringText.toString().length()); //удаляем хвостик
  57. }
  58.  
  59. writer.flush();
  60.  
  61. }
  62. public static void decoding() throws Exception{
  63. System.out.println("\nDecoding: ");
  64. List<String> lines = Files.readAllLines(Paths.get("src//zaschita1//output.txt"), StandardCharsets.UTF_8);
  65. StringBuilder sb = new StringBuilder();
  66.  
  67. for(String line: lines){
  68. sb.append(line);
  69. }
  70.  
  71. int indexU200B = sb.toString().indexOf('\u200B');
  72. int sbLength = sb.toString().length();
  73. sb.delete(indexU200B, sbLength);
  74.  
  75. System.out.println("sb: " + sb.toString());
  76.  
  77. FileWriter writerOutput = new FileWriter("src//zaschita1//output_word.txt", false);
  78. writerOutput.write(sb.toString());
  79. writerOutput.flush();
  80.  
  81. /*
  82. sb.delete(sb.toString().indexOf('\u200B'), sb.toString().length());
  83.  
  84. int start = 0, end = 16;
  85. int[] asciiCode = new int[sb.toString().length() / 16];
  86.  
  87. StringBuilder res = new StringBuilder();
  88. for (int i = 0; i < asciiCode.length; i++ ){
  89. asciiCode[i] = (char)Integer.parseInt(sb.toString().substring(start, end), 2);
  90. start += 16;
  91. end += 16;
  92. System.out.println("ascii: " + asciiCode[i]);
  93. res.insert(res.length(), (char)asciiCode[i]);
  94. //System.out.println("char: " + res.toString());
  95. }
  96.  
  97. FileWriter writerOutput = new FileWriter("src//zaschita1//output_word.txt", false);
  98. writerOutput.write(res.toString());
  99. writerOutput.flush();
  100. */
  101. }
  102.  
  103. public static void main(String[] args) throws Exception{
  104. encoding();
  105. decoding();
  106. }
  107.  
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement