java 如何实现把一个文件同时上传到两个固定地址的服务器上,最好有代码,在这里提前谢谢各位了!
据我的能力理解不太能同时实现。
我讲下我的实现思路:
1,你有一台作为接收,文件上传至此, 得到file1;
2,file1,输出到另一台机器 建议采用(ftp协议),至于是同步还是异步执行无关紧要。
3,其他逻辑。
这个你需要了解git的基本操作:不错的git教程:网页链接
对于你上面说的问题:
1、你需要把你新加的文件add到本地
2、提交commit到本地仓库
3、推送push到远程仓库
希望可以帮到你,如果不理解可以追问
这个是我写的三个类,用于多线程操作读取文件内容和写入文件内容,不知道是不是你合你味口。
________________第一个类______读取内容__写入内容____________________
package pro;
import javaio;
public class ReadFileToWriteOtherFile {
private File oldFile;
private File newFile;
private BufferedReader br;
private BufferedWriter bw;
private String totalString="";
private Boolean flag=true; //用于标记文件名是否存在 true表示存在
public ReadFileToWriteOtherFile()
{
oldFile=null;
newFile=null;
br=null;
bw=null;
Systemoutprintln("初始化成功");
}
public void readInfoFromFile(String fileName)
{
Systemoutprintln("开始读取");
try
{
oldFile=new File(fileName);
if(oldFileexists()) //如果文件存在
{
Systemoutprintln("存在");
br=new BufferedReader(new FileReader(oldFile));
String info=brreadLine(); //读取一行
while(info!=null)
{
totalString+=info; //将读取到的一行添加到totalString中
info=brreadLine(); //再读取下一行
//Systemoutprintln(totalString);
}
Systemoutprintln("读取完成,准备写入…………");
}
else //如果文件不存在
{
Systemoutprintln("文件不存在");
flag=false; //标记该文件不存在
}
// Systemoutprintln("totalString="+totalString);
}
catch(FileNotFoundException e)
{
Systemoutprintln(e);Systemoutprintln("开始读取中1");
}
catch(IOException e)
{Systemoutprintln(e);Systemoutprintln("开始读取中2");}
}
public void writeInfoToFile(String fileName)
{
if(!flag) //如果标记前面的文件不存在,则return
{
flag=true; //改回原来的文件标记符
return;
}
try
{
newFile=new File(fileName);
if(newFileexists()) //如果存在,不用创建新文件
{
Systemoutprintln("文件存在,可以写入!");
}
else //如果不存在,则创建一个新文件
{
Systemoutprintln("文件不存在,准备创建新文件");
newFilecreateNewFile();
Systemoutprintln("文件创建成功,可以写入");
}
bw=new BufferedWriter(new FileWriter(newFile,true));
// Systemoutprintln("totalString="+totalString);
bwwrite(totalString,0,totalStringlength());
bwflush(); //刷新缓冲区
Systemoutprintln("写入完成");
totalString="\r\t"; //清空原来的字符串
}
catch(FileNotFoundException e)
{Systemoutprintln(e);}
catch(IOException e)
{Systemoutprintln(e);}
}
}
________________第二个类______一个自定义的线程类____________________
package pro;
import javalangThread;
public class MyThread extends Thread
{
private int index; //用于数组的位置
private String[] fileNames; //定义一个字符串数组
ReadFileToWriteOtherFile bftwo=new ReadFileToWriteOtherFile(); //定义前面的自定义类
public MyThread(String[] fileNames,int index) //index表示数组位置标号
{
thisindex=index;
thisfileNames=fileNames;
}
public void run()
{
bftworeadInfoFromFile(fileNames[index]);//传入数组中的字符串参数
bftwowriteInfoToFile("btxt"); //传入写入的目的地文件
//index++; //数组位置加1
Systemoutprintln("==============");//分隔线
}
}
________________第三个类______主程序____________________
package pro;
//import orgspringframeworkcontextApplicationContext;
//import orgspringframeworkcontextsupportClassPathXmlApplicationContext;
import javaio;
public class BeanRunApp {
/
Method main
@param args
/
public static void main(String[] args)
{
/ ApplicationContext apc=new ClassPathXmlApplicationContext("beansxml");
ClassRoom croom=(ClassRoom)apcgetBean("classRoom");
croomout();
Systemoutprintln("over");
/
long startTime=SystemcurrentTimeMillis();
String[] a={"atxt","ctxt","dtxt","etxt"}; //用一个符品数组保存文件名
for(int i=0;i<alength;i++) //用数组的长度来作为循环条件
{ //把这个数组和i的值作为构造函数传入线程类
MyThread myth=new MyThread(a,i);
Systemoutprintln("--------------------------------");
mythstart(); //执行
Systemoutprintln("当前的线程是:"+mythgetName());
}
long endTime=SystemcurrentTimeMillis();
Systemoutprintln("耗时:"+(endTime-startTime)+"毫秒");
}
}
黑色向右箭头 :本地修改过的文件
蓝色向左箭头 :SVN服务器端修改过的文件
黑色向右且带加号的箭头 :本地比服务器端多出的文件
蓝色向左且带加号的箭头 :服务器端比本地多出的文件
黑色向右且带减号的箭头:本地已经删除,而服务器端没有删除的文件
蓝色向左且带减号的箭头:服务器端已经删除,而本地没有删除的文件
红色双向箭头 :本地和服务器端同时修改过的文件
黑色带星号的图标 :本地已经修改过但是没有提交的文件
将你修改的内容同步至svn即可。
0条评论