CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

急!100求:如何使一个代码块所有的语句都能成功,否则就不执行?

楼主gaochao79(www.informe.cn)2004-12-01 14:55:27 在 Java / Web 开发 提问

比如我要移动文件    
  有三个文件需要同时移动    
  如果有一个移动不成功则另外两个也不移动 问题点数:100、回复次数:13Top

1 楼MYLiao(醉书生)回复于 2004-12-01 15:01:01 得分 4

没做过,帮顶Top

2 楼kenli(爱祝福网(http://www.izhufu.com/))回复于 2004-12-01 15:06:00 得分 10

估计你要做一个rollback,在做之前记录你的状态,如果万一失败就要rollback到以前的状态。Top

3 楼dawnwang(晓风)回复于 2004-12-01 15:07:29 得分 5

靠,这不是典型的事务处理吗,可惜我不会,我只会一个传不成功就将成功的删除掉.Top

4 楼cnfalcon(中国猎鹰)回复于 2004-12-01 15:09:39 得分 30

先复制文件到目标文件夹,如果三个文件都复制成功,删除原有文件;如果有文件没有复制成功,删除目标文件夹中已复制的文件。Top

5 楼drugon(更高,更远,更强)回复于 2004-12-01 15:33:23 得分 30

对于文件流来说,只能是先复制文件到目标文件夹,如果三个文件都复制成功,删除原有文件;如果有文件没有复制成功,删除目标文件夹中已复制的文件。Top

6 楼lidi3503(我来也)回复于 2004-12-01 15:42:41 得分 5

同意楼上的,如果你的要处理的问题就是文件复制的问题,这样处理就行了,再复杂就得用到事物的回滚机制了.Top

7 楼whyxx(最近有点闲)回复于 2004-12-01 16:04:16 得分 5

用程序将三个文件压缩后再移过去解压,又省空间,又能解决你这个问题Top

8 楼haroyy(天平)回复于 2004-12-01 16:56:59 得分 5

cnfalcon(中国猎鹰)   的方法最好了Top

9 楼tom2005(随海奔跑)回复于 2004-12-01 17:04:29 得分 2

upTop

10 楼samue(下弦月)回复于 2004-12-01 17:05:39 得分 2

做成事务就好了啊Top

11 楼catblue(佛家说:一粒沙中看世界。)回复于 2004-12-01 17:09:07 得分 2

up   同意楼上的看法Top

12 楼gaochao79(www.informe.cn)回复于 2004-12-02 13:51:27 得分 0

谢谢大家的指点,下面我把问题说清楚  
  我移动文件的方法是:  
  public   static   boolean   move(String   input,   String   output)   {  
  File   inputFile   =   new   File(input);  
  File   outputFile   =   new   File(output);  
  return   inputFile.renameTo(outputFile);  
  }  
  现在我要同时移动三个相关的文件,同时为他们改名。  
  但是这个函数常常有不成功的情况出现。  
  就是原文件还留在那里新文件没有生成。  
  如果只有一个成功那么就没有意义了  
  而且破坏了这一组文件的完整性  
  因为改名后很难知道那个移动成功文件是和剩下的文件一组的。  
   
  下面是我写的拷贝文件的方法,这个方法在我所做的上百次测试中是百分之百成功的。  
  但是它有一个缺点:虽然已经使用了缓存,比不用缓存快很多,但是还是比上面移动文件的方法慢很多。  
  public   static   void   myBufferedCopy(String   oldfile,   String   newfile)   {  
  FileInputStream   is   =   null;  
  FileOutputStream   os   =   null;  
  try   {  
  is   =   new   FileInputStream(oldfile);  
  os   =   new   FileOutputStream(newfile);  
  }   catch   (FileNotFoundException   e)   {  
  //   TODO   Auto-generated   catch   block  
  e.printStackTrace();  
  }  
  BufferedInputStream   bis   =   new   BufferedInputStream(is);  
  BufferedOutputStream   bos   =   new   BufferedOutputStream(os);  
  int   n;  
   
  try   {  
  while   ((n   =   bis.read())   !=   -1)   {  
  bos.write(n);  
  }  
  }   catch   (IOException   e1)   {  
  //   TODO   Auto-generated   catch   block  
  e1.printStackTrace();  
  }  
  try   {  
  is.close();  
  os.close();  
  }   catch   (IOException   e2)   {  
  //   TODO   Auto-generated   catch   block  
  e2.printStackTrace();  
  }  
  }  
   
  兄弟们什么意见?Top

13 楼gaochao79(www.informe.cn)回复于 2004-12-02 14:05:55 得分 0

我也是想做成事务,但是我对事务不是很理解,请兄弟们指点,最好给出代码实例。Top

相关问题

  • 当Adoquery的connectionstring的测试链接成功,sql语句可以在查询分析器执行成功时,为什么程序在执行这行代码adoquery1.execsql;时停滞2
  • 用query时为何open后的语句无法执行(附代码)?
  • 如何得到当前执行的语句在源代码中的行数?
  • ASP中SQL语句执行是否成功问题
  • 请问如何将下面的SQL语句成功执行?
  • 如何判断sql语句成功执行
  • 不加Ceate能否让下列语句执行成功。谢谢
  • 如果得到语句执行是否成功的结果?
  • 如何验证用SQL语句在PB中执行成功!
  • 执行SQL语句出错,和书上代码一模一样,何故?TKS(附代码)

关键词

  • 文件
  • 移动
  • 文件夹
  • os
  • 复制
  • 成功
  • 删除
  • 目标文件夹
  • 方法
  • todo auto

得分解答快速导航

  • 帖主:gaochao79
  • MYLiao
  • kenli
  • dawnwang
  • cnfalcon
  • drugon
  • lidi3503
  • whyxx
  • haroyy
  • tom2005
  • samue
  • catblue

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo