需求1(文件操作: java vs python):
实现备份某个文件的需求,如: 输入一个“/aa/bb/c.txt” 或"/aa/bb/cc" , 验证输入,
看是否存在该文件:
若有则在同级目录下备份此文件,生成c2.txt
若无该文件则在同级目录下创建此文件,添加”hello world“内容,生成备份文件c2.txt
若输入为目录,则提示错误!
java: 第一步 定义方法 fileCopyManage(String file): 集中管理正确文件的copy操作
public static File fileCopyManage(String file)throws IOException{ String parts[]=file.split("/");// aa/bb/a.txt int len=parts.length; String txt=parts[len-1];//文件名: a.txt String txt2=txt.substring(0, txt.indexOf("."));//a--->a2 txt2+="2"; String type=txt.substring(txt.indexOf(".")); txt2+=type; String file2=file.replaceAll(txt,txt2); //a.txt--复制内容----->a2.txt InputStream instream=new FileInputStream(file); OutputStream out=new FileOutputStream(file2); int word=instream.read(); while(word!=-1){ out.write(word); word=instream.read(); } out.flush(); out.close(); instream.close(); return new File(txt2); }
java: 第二步 定义方法 input() 过滤输入的信息:筛除空目录,保证有此文件存在=>调用fileCopyManage(String file)备份
public static File input() throws IOException{ //输入文件信息 Scanner scan=new Scanner(System.in); System.out.println("请输入要copy的原文件:"); String in=scan.next(); String parts[]=in.split("/"); int len=parts.length; String txt=parts[len-1]; File ff=null; // 取出最后一个--元素: 判断是否为文件名? if(txt.contains(".")){ System.out.println("这是一个文件:"+txt); //判断文件是否存在 File f=new File(in); if(!f.exists()){ System.out.println("文件不存在,将创建简单helloworld文件内容。。。"); //创建目录 String sub=in.substring(0, in.length()-txt.length()-1); File dir=new File(sub); if(!dir.exists()){//目录没有 System.out.println("目录不存在,创建目录+文件...."); dir.mkdirs(); }else{//目录存在 System.out.println("目录已存在,创建文件........"); } //创建文件,写入helloworld File former=new File(in); former.createNewFile(); //写入文件==一定的内容 OutputStream out=new FileOutputStream(former); out.write("hello world! \nhello2".getBytes()); out.flush();out.close(); //创建复制文件---假定同级目录:a2的形式 ff=fileCopyManage(in); }else{//文件路径存在, 是一个文件 System.out.println("文件已存在"); ff=fileCopyManage(in); } }else {//输入了空目录 System.out.println("这是一个目录.....error"); return null; } System.out.println("拷贝正常结束....."); return ff;//返回自动备份后的文件 }
java: 第三步 在main()调用input()启动程序
public static void main(String[] args) throws IOException { input() ; }
python: 定义正确文件的拷贝方法copyfile(name),程序直接调用
import os #输入访问的文件----判断是否存在===是否文件 def copyfile(name): dir= os.path.dirname(name) #取出目录,取出文件名 /aa/bb file=os.path.basename(name) #a.txt file2=file[:file.index(".")]+"2" ####a2 type=file[file.index("."):] ####.txt file2+=type #a2.txt full_file2=dir+"/"+file2 #/aa/bb/a.txt print("备份文件名:",file2,"全路径:",full_file2) #创建--备份文件 ff1=open(name,"r") ff2=open(full_file2,"w") mess=ff1.read() ff2.write(mess) ff2.flush() ff2.close() ff1.close() print("备份完成!!!") name=input("请输入文件名:") if os.path.exists(name): #存在 if os.path.isfile(name): #是文件--->拷贝同目录: a2.txt copyfile(name) else: print("这是一个存在的目录.......error") #输入的文件不存==创建新文件“hello”, 复制内容 # if (os.path.exists(name)==False):#分解dir + filename else: #输入找不到 dir=os.path.dirname(name) fname=os.path.basename(name) #是否存在目录 if fname.__contains__("."): #输入的是: 文件 if os.path.exists(dir)==False:#没有此目录:创建目录+文件 os.makedirs(dir) file=open(name,"w")#创建文件 file.write("hello\nhello2") file.flush() file.close() #调用方法法: 备份文件 copyfile(name) else: print("未知的目录.......error")
需求2(import操作: java vs python):
实现类似java mvc 三层验证登录的功能,必须多个文件互相调用,完成验证成功和失败的操作!
java: 第一个文件 base.propertiesname=root pwd=123
java: 第二个文件 service.java 定义连个static方法: select( 调用check() )
public class service { public static String tvs[]={"天龙八部","水浒","三国"}; public static String mvs[]={"2012","侏罗纪公园","黑客帝国"}; private static boolean check(String name,String pwd) throws FileNotFoundException, IOException{ //加载数据文件: 验证密码+用户名 Properties per=new Properties(); per.load(new FileInputStream("/home/da/eclipse_workspace/Java1/src/mvc/base.properties")); String name2=per.getProperty("name"); String pwd2=per.getProperty("pwd"); System.out.println("name2--pwd2: "+name2+"---"+pwd2); if(name.equals(name2) && pwd.equals(pwd2)){ return true; } return false; } public static Map<String,String[]> selectTv(String name,String pwd) throws FileNotFoundException, IOException{ boolean flag=check(name,pwd); if(flag){ Map<String,String[]> map=new HashMap<>(); map.put("tvs", tvs); map.put("mvs", mvs); System.out.println("登录成功!"); return map; } System.out.println("login failed......"); return null; }
java: 第三个文件 controller.java 调用service.java 的静态方法
public static void main(String[] args) throws FileNotFoundException, IOException { //输入用户名+密码: 验证---》显示结果 Map<String ,String[]> map=service.selectTv("root1","123"); if(map!=null){ String [] tvs=map.get("tvs"); String [] mvs=map.get("mvs"); for(String st:tvs){ System.out.print(st); } System.out.println("-------------------"); for(String st:mvs){ System.out.print(st); } }
python 第一个文件:【test包】mvc.py 在test包下: 有两个子包service【show.py】,db【setting.py】
from test.service import show #查询节目列表-----验证登录(db=settting.py dbinfo{})-----logic.py[ showinfo{} ] show.select("root2","123")
python 第二个文件service 层:【test.service包】show.py
from test.db import setting showinfo={ "tv":["三国","水浒","西游"] , "movie":["黑客帝国","侏罗纪公园"] } def checkLogin(conf1,conf2): if conf1==setting.dbinfo["name"] and conf2==setting.dbinfo["pwd"]: print("登录成功!") return True else: print("failed login ......") def select(conf1,conf2): if checkLogin(conf1,conf2):#登录成功,显示信息---电影,电视 print("tv:----",showinfo["tv"]) print("movie:----",showinfo["movie"])
python 第三个文件model 层: 【test.db包】setting.py
dbinfo={ "name":"root", "pwd":"123" }