黑马程序员技术交流社区
标题:
拷贝文件和加密
[打印本页]
作者:
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