黑马程序员技术交流社区

标题: 拷贝文件和加密 [打印本页]

作者: yan1992924    时间: 2016-3-30 21:24
标题: 拷贝文件和加密
package com.yuan.io;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
public class Test2 {
/**
  * 在控制台录入文件的路径,将文件拷贝到当前项目下
  *
  * 分析:
  *
  * 1,定义方法对键盘录入的路径进行判断,如果是文件就返回
  * 2,在主方法中接收该文件
  * 3,读和写该文件
  * @throws IOException
  */
public static void main(String[] args) throws IOException {
  File file = getFile();     //获取文件
  BufferedInputStream  bis = new BufferedInputStream(new FileInputStream(file));
  BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file.getName()));
  
  int b;
  while((b = bis.read()) != -1) {
   bos.write(b);
  }
  
  bis.close();
  bos.close();
}
/*
  * 定义一个方法获取键盘录入的文件路径,并封装成File对象返回
  * 1,返回值类型File
  * 2,参数列表无
  */
public static File getFile() {
  Scanner sc = new Scanner(System.in);    //创建键盘录入对象
  System.out.println("请输入一个文件的路径:");
  while(true) {
   String line = sc.nextLine();     //接收键盘录入的路径
   File file = new File(line);      //封装成File对象,并对其进行判断
   if(!file.exists()) {
    System.out.println("您录入的文件路径不存在,请重新录入:");
   }else if(file.isDirectory()) {
    System.out.println("您录入的是文件夹路径,请重新录入:");
   }else {
    return file;
   }
  }
}
}






package com.yuan.io;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Test1 {
/**
  * @param args
  * @throws IOException
  * 将写出的字节异或上一个数,这个数就是密钥,解密的时候再次异或就可以了
  */
public static void main(String[] args) throws IOException {
  BufferedInputStream bis = new BufferedInputStream(new FileInputStream("copy.jpg"));
  BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("copy2.jpg"));
  
  int b;
  while((b = bis.read()) != -1) {
   bos.write(b ^ 123);
  }
  
  bis.close();
  bos.close();
}
}






作者: wuyibo    时间: 2016-3-30 22:10
加油,加油,大家加油
作者: 小灰辉    时间: 2016-3-30 22:17
额 这是IO流的知识点吧 ,小声说声 我们还没学到  
作者: 452296824    时间: 2016-3-30 23:28
对啊对啊还没学呢
作者: Gqg    时间: 2016-3-30 23:29
本帖最后由 Gqg 于 2016-3-30 23:31 编辑

/*
                 将写出的字节异或上一个数,这个数就是密钥,解密的时候再次异或就可以了
                 
                 输入一段话,然后对文件进行加密;
                 需要先键盘输入:输入的字符串变为字符数组然后进行相加;
                 加密的话,算是拷贝的,两个对象读和写,如果只是单独的去写,一个一个加密钥?
                 */
                //FileInputStream fis=new FileInputStream("ooo.txt");
                /*Scanner sc=new Scanner(System.in);
                System.out.println("输入:");
                FileOutputStream fos=new FileOutputStream("你要看吗.txt",true);
                while(true){
                        
                        String s=sc.nextLine();
                        if("quit".equals(s)){
                                break;
                        }
                        fos.write("\t\n".getBytes());
                        fos.write(s.getBytes());
                        
                }
                //fos.write(456^23);
               
                fos.close();*/
               
                /*
                 在控制台录入文件的路径,将文件拷贝到当前项目下
                 
                 键盘输入;
                 录入路径,可不可以先创建两个文件?有两个路径;
                 直接输入
                 * */
        
                /*Scanner sc=new Scanner(System.in);
                System.out.println("输入录入文件路径");
                String s=sc.nextLine();
                File file=new File(s);
                System.out.println("输入拷贝路径");
                String s1=sc.nextLine();
                File file1=new File(s1);
               
        
               
               
        //可以自定义的给任意两个路径读写文件
               
                FileInputStream fis=new FileInputStream(file);
                FileOutputStream fos=new FileOutputStream(file1+file.getName());
                int b;
                while((b=fis.read())!=-1){
                        fos.write(b);
                }
                fis.close();                                   
                fos.close();
                */
               
                //给文件加密:
                /*FileInputStream fis=new FileInputStream("C:\\Users\\Desktop\\加密.doc");
                FileOutputStream fos=new FileOutputStream("C:\\Users\\Desktop\\aa.doc");
                int b;
                while((b=fis.read())!=-1){
                        fos.write(b^89);
                }
                fis.close();
                fos.close();
                */
               
        }
        
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2