⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 checktext.java

📁 一个用于实现不同数据库数据同步的程序
💻 JAVA
字号:
import java.io.*;

/* 
 * 假设新生成文档为old.txt,5分钟前生成的文档被保存为old.txt
 * 记录按学号排序
 */

public class checkText
{
	private String databaseName="";

	checkText(String dn)
	{
		databaseName=dn;
	}


	public int checking(String txtAddress,String sTime)
	{
		
		File fileOld=new File(txtAddress+"old.txt");
		File fileNew=new File(txtAddress+"new.txt");
		int updateOrNot=0;
		
		if((!fileOld.exists())||(!fileNew.exists()))
		{
			System.out.println("文件不存在");
			System.exit(1);
		}
		else
		{
			RandomAccessFile frOld=null;
			RandomAccessFile frNew=null;
			try
			{
				frOld=new RandomAccessFile(fileOld,"r");
				frNew=new RandomAccessFile(fileNew,"r");
			}
			catch(FileNotFoundException e){}

			String sOld="";
			String sNew="";
			String tempOld="";
			String tempNew="";
			String temp="";
			int start=0,mid=0,end=0;
			long intNoOld=-1L,intNoNew=-1L;
			long lOld=0;
			int b=0;
			int i=1;

			String ws="";

			dealMessage cutingMessage=new dealMessage();	
			writeText writeMissionManage=new writeText(databaseName,txtAddress,"MissionManageTemp.txt");

			//读取项名称
			try
			{
				if((sNew=frNew.readLine())!=null)
				{
					mid=sNew.indexOf("\t");
					while(mid!=-1)
					{
						i++;
						end=sNew.length();
						sNew=cutingMessage.cutMessage(sNew,mid,end);
						mid=sNew.indexOf("\t");
						
					}
				}
			}
			catch(IOException e){}

			String []item=new String[i];

			try
			{
				if((sOld=frOld.readLine())!=null)
				{
					for(int j=0;j<i;j++)
					{
						mid=sOld.indexOf("\t");
						end=sOld.length();
						if(mid==-1)
						{
							mid=end;
							item[j]=cutingMessage.cutMessage(sOld,start,mid);
						}
						else
						{
							item[j]=cutingMessage.cutMessage(sOld,start,mid);
							sOld=cutingMessage.cutMessage(sOld,mid,end);
						}
					}
				}
			}
			catch(IOException e){}	
	
			try
			{
				writeMissionManage.writingMission("Update\t"+sTime+"\t0");
				writeMissionManage.writingMission("------------------------------------------");

				while((sNew=frNew.readLine())!=null)
				{
					mid=sNew.indexOf("\t");
					tempNew=cutingMessage.cutMessage(sNew,start,mid);b=0;
				
					lOld=frOld.getFilePointer();
					while((sOld=frOld.readLine())!=null)
					{
						b=1;
						mid=sOld.indexOf("\t");
						tempOld=cutingMessage.cutMessage(sOld,start,mid);
					
						//学号相等
						if(tempNew.equals(tempOld))
						{
							System.out.println(tempNew);
	
							if(!sNew.equals(sOld))
							{
								ws="alter\t"+tempNew;
								end=sNew.length();
								sNew=cutingMessage.cutMessage(sNew,mid,end);
								end=sOld.length();
								sOld=cutingMessage.cutMessage(sOld,mid,end);

								i=0;
								while(true)
								{
									i++;
									
									mid=sNew.indexOf("\t");
									if(mid==-1)
									{
										mid=sNew.length();
									}
									tempNew=cutingMessage.cutMessage(sNew,start,mid);
									mid=sOld.indexOf("\t");
									if(mid==-1)
									{
										mid=sOld.length();
									}
									tempOld=cutingMessage.cutMessage(sOld,start,mid);

									if(!tempNew.equals(tempOld))
									{
										System.out.println(item[i]);
										ws+="\t"+item[i]+"\t"+tempOld+"\t"+tempNew;
										System.out.println("\t"+tempOld+"->"+tempNew);
									}

									end=sNew.length();
									sNew=cutingMessage.cutMessage(sNew,mid,end);
									end=sOld.length();
									sOld=cutingMessage.cutMessage(sOld,mid,end);

									if(i==(item.length-1))
									{
										writeMissionManage.insertWriting(ws,sTime);
										updateOrNot=1;
										break;
									}
								}
								
							}
							break;
						}
						else
						{
							intNoOld=Long.parseLong(tempOld);
							intNoNew=Long.parseLong(tempNew);
			
							//旧文档中的学号小于新文档中的学号,即旧文档中的该记录在新文档已被删除
							if(intNoOld<intNoNew)
							{
								System.out.println(tempOld+":delete");
								
								ws="delete\t"+tempOld;
								writeMissionManage.insertWriting(ws,sTime);
								updateOrNot=1;
								b=0;
								continue;
							}
							else
							{
								//新文档中的学号小于旧文档中的学号,即该记录为新记录
								if(intNoOld>intNoNew)
								{
									System.out.println(tempNew+":new");
									
									ws="new\t"+sNew;
									writeMissionManage.insertWriting(ws,sTime);
									frOld.seek(lOld);
									updateOrNot=1;
									break;
								}
							}
						}

					}

					if(b==0)
					{
						System.out.println(tempNew+":new");
						ws="new\t"+sNew;
						writeMissionManage.insertWriting(ws,sTime);
						updateOrNot=1;
					}

				}

				while((sOld=frOld.readLine())!=null)
				{
					mid=sOld.indexOf("\t");
					tempOld=cutingMessage.cutMessage(sOld,start,mid);
					System.out.println(tempOld+":delete");
					ws="delete\t"+tempOld;
					writeMissionManage.insertWriting(ws,sTime);
					updateOrNot=1;
				}

				frOld.close();
				frNew.close();


			}
			catch(IOException e){}

			
		}

		return updateOrNot;
	}




	public void checkMissionManage(String txtAddress,String sTime,int interval)
	{
		File file=new File(txtAddress+"MissionManageTemp.txt");
		//Key k=null;

		if(!file.exists())
		{
			System.out.println("Open file error!This database's daily is no exit!");
			System.exit(1);
		}
		else
		{
			RandomAccessFile fr=null;
			//k=new Key(txtAddress);
			//k.decrypt(txtAddress+"MissionManageTemp.txt");
			try
			{
				fr=new RandomAccessFile(file,"rw");
			}
			catch(FileNotFoundException e){}


			String s="",tempString="",state="";
			int start=0,mid=0,i=0;		
			dealMessage cutingMessage=new dealMessage();
			getUpdateTime gut=new getUpdateTime();
			sqlOperation so=new sqlOperation();
			long l=0,mark=0;
			byte insertStr[]=null;

			try
			{
				while((s=fr.readLine())!=null)
				{
					start=0;
					mid=s.indexOf("\t");
					if(mid>1)
					{
						tempString=cutingMessage.cutMessage(s,start,mid);
						if(tempString.equals("Update"))
						{
							start=s.indexOf("\t");
							mid=s.lastIndexOf("\t");
							tempString=cutingMessage.cutMessage(s,start,mid);
							i=gut.oneDayOrNot(tempString,sTime);
							if(i>interval)
							{
								
								l=fr.getFilePointer();
								while((s=fr.readLine())!=null)
								{
									start=0;
									mid=s.indexOf("\t");
									if(mid>1)
									{
										tempString=cutingMessage.cutMessage(s,start,mid);
										if(tempString.equals("Update"))
										{
											break;
										}
									}
									else
									{
										start=s.lastIndexOf("\t");
										mid=s.length();
										tempString=cutingMessage.cutMessage(s,start,mid);
										i=Integer.parseInt(tempString);
										if(i!=1)
										{
											start=0;
											mid=s.lastIndexOf("\t");
											s=cutingMessage.cutMessage(s,start,mid);
											
											//用JMS向数据库名字为tempString
											s+="\t  -1\n";
	
											//邮件发送也没有确认,

											insertStr=s.getBytes();
											fr.seek(l);
											fr.write(insertStr);
										}
									}
								
								}
							}
						}
					}
				}
			}
			catch(IOException e){}

			//k.encryption(txtAddress+"MissionManageTemp.txt");
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -