- 浏览: 179983 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (186)
- Ant (11)
- Axis2 (15)
- Car (9)
- Eclipse (1)
- Java (19)
- Java-EM (4)
- Javascript (11)
- Jsp (1)
- Hibernate (9)
- Mysql (1)
- Ms-Dos (5)
- Music (0)
- Oracle (3)
- Postgresql (0)
- Photoshop (1)
- Spring (17)
- Struts (8)
- Selenium (5)
- Ubuntu (13)
- News (17)
- Others (7)
- SSH (11)
- 算法 (5)
- FreeMarker (4)
- Tomcat (2)
- Linux (5)
最新评论
tputStream fos=new FileOutputStream(objFile);
byte[] buf=new byte[1024];
int i=0;
while((i=fis.read(buf))!=-1){
fos.write(buf,0,i);
}
fis.close();
fos.close();
} catch(IOException ie){
ie.printStackTrace();
return false;
}
return true;
}
/**
* 生成配置文件
* @param pac 包路径
* @param path 文件路径
* @return 返回保存是否正确
*/
public boolean createCfg(){
File dir=new File(objPath);
String[] dirs=dir.list();
String curDir;
char sep=File.separatorChar;
String line;
for(int i=0;i<dirs.length;i++){
if(!new File(objPath+sep+dirs[i]).isDirectory()){
continue;
}
globalLine=null;
curDir=objPath+sep+dirs[i]+sep+"src";
getPath(curDir,null);
line=dirs[i]+":"+globalLine;
lines.add(line);
}
File cfgFile=new File(filePath+sep+configeFile);
saveCfg(cfgFile);
return true;
}
/**
* 递归收集
* @param root
* @param pack
*/
private void getPath(String root,String pack){
if(hasNoSub(root)){ //如果没有了子目录
if(globalLine==null){
globalLine=pack;
} else{
globalLine+="|"+pack;
}
return;
}
File dir=new File(root);
char sep=File.separatorChar;
String[] subs=dir.list();
for(int i=0;i<subs.length;i++){
String curPath=root+sep+subs[i];
File tmp=new File(curPath);
if(tmp.isDirectory()){
if(pack==null){ //如果是目录,则递归
getPath(curPath,subs[i]);
} else{
getPath(curPath,pack+"."+subs[i]);
}
}
}
}
/**
* 判断一个目录是否有子目录,没有返回true
* @param dir
* @return
*/
private boolean hasNoSub(String directory){
File dir=new File(directory);
if(!dir.isDirectory()){
return true;
}
String[] subs=dir.list();
for(int i=0;i<subs.length;i++){
File tmp=new File(dir+File.separator+subs[i]);
if(tmp.isDirectory()){
return false;
}
}
return true;
}
/**
*
* @param fileName
* @return
*/
private String getExt(String fileName){
int pos=fileName.lastIndexOf(".");
if(pos>0){
return fileName.substring(pos+1,fileName.length());
}
return null;
}
/**
* 循环处理一个文件夹
*/
public void excute(){
char sep=File.separatorChar;
File list=new File(filePath+sep+"list.txt");
File dir=new File(filePath);
if(!dir.exists()||!dir.isDirectory()){ //指定的不是目录
ps.println("指定上传文件的目录不正确");
return;
}
File cfgFile=new File(filePath+sep+configeFile);
try{
PrintStream psList=new PrintStream(new FileOutputStream(list));
if(!cfgFile.exists()&&!cfgFile.createNewFile()){ //配置文件不存在
ps.println("指定的配置文件不存在");
return;
}
if(!readCfg(cfgFile)){ //读入配置文件失败
ps.println("读入配置文件失败");
return;
}
File[] files=dir.listFiles();
if(files.length<2){ //没有要上传的文件
ps.println("指定的目录中没有文件");
return;
}
//逐个文件处理
for(int i=0;i<files.length;i++){
File curFile=files[i];
if(!curFile.isFile()||!getExt(curFile.getName()).equals("java")){
continue;
}
psList.println(curFile.getName());
//当前文件是java文件
String pac=readPac(curFile); //取该文件的包路径
ps.println("读包完成....");
if(pac==null){
// ps.println("文件读出包路径出错");
return;
}
String path=parsePac(pac,cfgFile); //通过package取路径
ps.println("解析完成....");
if(path==null){
ps.println("取文件的保存路径出错");
continue; //跳过这个文件
}
//组装成一个完整的路径
String fullPath=objPath+sep+path+sep+"src"+sep+pac.replace('.',sep);
ps.println("建立拷贝路径:"+fullPath);
if(!copy(curFile,fullPath)){
ps.println("拷贝文件失败"+curFile.getName());
continue;
}
curFile.delete();
ps.println("成功保存一个文件");
}
ps.println("成功保存所有文件");
if(!saveCfg(cfgFile)){
ps.println("保存配置文件失败");
return;
}
} catch(IOException ie){
ie.printStackTrace();
}
}
/**
* 构造函数
*/
public SaveFile(){
try{
File log=new File(filePath+File.separator+"cf.log");
if(log.exists()){
log.delete();
}
log.createNewFile();
FileOutputStream fos=new FileOutputStream(log);
ps=new PrintStream(fos);
} catch(IOException ie){
ie.printStackTrace();
System.out.print("创建日志失败!");
ps=System.out;
}
lines=new ArrayList();
}
public static void main(String[] args){
SaveFile sf=new SaveFile();
if(args.length==1){
if(args[0].equals("mc")){ //生成配置文件
sf.createCfg();
}
if(args[0].equals("cf")){ //完成分类拷贝工作
sf.excute();
}
} else{
sf.ps.println("请指定参数:\n mc 生成配置文件\n cf 拷贝文件");
return;
}
}
}
byte[] buf=new byte[1024];
int i=0;
while((i=fis.read(buf))!=-1){
fos.write(buf,0,i);
}
fis.close();
fos.close();
} catch(IOException ie){
ie.printStackTrace();
return false;
}
return true;
}
/**
* 生成配置文件
* @param pac 包路径
* @param path 文件路径
* @return 返回保存是否正确
*/
public boolean createCfg(){
File dir=new File(objPath);
String[] dirs=dir.list();
String curDir;
char sep=File.separatorChar;
String line;
for(int i=0;i<dirs.length;i++){
if(!new File(objPath+sep+dirs[i]).isDirectory()){
continue;
}
globalLine=null;
curDir=objPath+sep+dirs[i]+sep+"src";
getPath(curDir,null);
line=dirs[i]+":"+globalLine;
lines.add(line);
}
File cfgFile=new File(filePath+sep+configeFile);
saveCfg(cfgFile);
return true;
}
/**
* 递归收集
* @param root
* @param pack
*/
private void getPath(String root,String pack){
if(hasNoSub(root)){ //如果没有了子目录
if(globalLine==null){
globalLine=pack;
} else{
globalLine+="|"+pack;
}
return;
}
File dir=new File(root);
char sep=File.separatorChar;
String[] subs=dir.list();
for(int i=0;i<subs.length;i++){
String curPath=root+sep+subs[i];
File tmp=new File(curPath);
if(tmp.isDirectory()){
if(pack==null){ //如果是目录,则递归
getPath(curPath,subs[i]);
} else{
getPath(curPath,pack+"."+subs[i]);
}
}
}
}
/**
* 判断一个目录是否有子目录,没有返回true
* @param dir
* @return
*/
private boolean hasNoSub(String directory){
File dir=new File(directory);
if(!dir.isDirectory()){
return true;
}
String[] subs=dir.list();
for(int i=0;i<subs.length;i++){
File tmp=new File(dir+File.separator+subs[i]);
if(tmp.isDirectory()){
return false;
}
}
return true;
}
/**
*
* @param fileName
* @return
*/
private String getExt(String fileName){
int pos=fileName.lastIndexOf(".");
if(pos>0){
return fileName.substring(pos+1,fileName.length());
}
return null;
}
/**
* 循环处理一个文件夹
*/
public void excute(){
char sep=File.separatorChar;
File list=new File(filePath+sep+"list.txt");
File dir=new File(filePath);
if(!dir.exists()||!dir.isDirectory()){ //指定的不是目录
ps.println("指定上传文件的目录不正确");
return;
}
File cfgFile=new File(filePath+sep+configeFile);
try{
PrintStream psList=new PrintStream(new FileOutputStream(list));
if(!cfgFile.exists()&&!cfgFile.createNewFile()){ //配置文件不存在
ps.println("指定的配置文件不存在");
return;
}
if(!readCfg(cfgFile)){ //读入配置文件失败
ps.println("读入配置文件失败");
return;
}
File[] files=dir.listFiles();
if(files.length<2){ //没有要上传的文件
ps.println("指定的目录中没有文件");
return;
}
//逐个文件处理
for(int i=0;i<files.length;i++){
File curFile=files[i];
if(!curFile.isFile()||!getExt(curFile.getName()).equals("java")){
continue;
}
psList.println(curFile.getName());
//当前文件是java文件
String pac=readPac(curFile); //取该文件的包路径
ps.println("读包完成....");
if(pac==null){
// ps.println("文件读出包路径出错");
return;
}
String path=parsePac(pac,cfgFile); //通过package取路径
ps.println("解析完成....");
if(path==null){
ps.println("取文件的保存路径出错");
continue; //跳过这个文件
}
//组装成一个完整的路径
String fullPath=objPath+sep+path+sep+"src"+sep+pac.replace('.',sep);
ps.println("建立拷贝路径:"+fullPath);
if(!copy(curFile,fullPath)){
ps.println("拷贝文件失败"+curFile.getName());
continue;
}
curFile.delete();
ps.println("成功保存一个文件");
}
ps.println("成功保存所有文件");
if(!saveCfg(cfgFile)){
ps.println("保存配置文件失败");
return;
}
} catch(IOException ie){
ie.printStackTrace();
}
}
/**
* 构造函数
*/
public SaveFile(){
try{
File log=new File(filePath+File.separator+"cf.log");
if(log.exists()){
log.delete();
}
log.createNewFile();
FileOutputStream fos=new FileOutputStream(log);
ps=new PrintStream(fos);
} catch(IOException ie){
ie.printStackTrace();
System.out.print("创建日志失败!");
ps=System.out;
}
lines=new ArrayList();
}
public static void main(String[] args){
SaveFile sf=new SaveFile();
if(args.length==1){
if(args[0].equals("mc")){ //生成配置文件
sf.createCfg();
}
if(args[0].equals("cf")){ //完成分类拷贝工作
sf.excute();
}
} else{
sf.ps.println("请指定参数:\n mc 生成配置文件\n cf 拷贝文件");
return;
}
}
}
发表评论
-
JAVA中建立多线程的典型例子
2008-10-24 21:23 748JAVA中建立多线程,无非两种方式,一是继承自thread类 ... -
解决 Java 程序的乱码问题
2008-10-28 19:19 671早上来上班,同事问在本机好好的 Java 程序,放到服务器上运 ... -
编写对GC友好,又不泄漏的代码
2008-10-31 14:07 668编写对GC友好,又不泄 ... -
java实现给图片添加水印和文字
2008-10-31 18:49 781import java.io.*; import com.su ... -
当我调用 ProductService继承BaseService的方法时,提示我BaseDao属性null
2008-10-31 18:59 910转自:http://hi.baidu.com/annleecn ... -
Java实现分类文件拷贝1
2008-10-31 19:12 960在Java中对文件进行分类 如果你是个Java程序员,也许你 ... -
Java实现分类文件拷贝2
2008-10-31 19:13 693对于对老文件的修改,我 ... -
Java实现分类文件拷贝3
2008-10-31 19:14 698java.io.BufferedWriter; import ... -
j2ee清除缓存的三句话
2008-10-31 19:19 513在ajax中经常会遇到一个问题,就是有重复请求的时候,ajax ... -
java中回调的实现
2008-10-31 19:22 646//定义一个接口 interface Incrementabl ... -
java实现快速排序算法
2008-10-31 19:23 653void paixu(int a[],int low,int ... -
java的窗口关闭问题
2008-10-31 19:24 966java的窗口关闭可以实现windowLinstener接口来 ... -
关于 DAO 接口设计的思考
2008-11-07 11:03 672需求: 现在要设计 3 个 DAO 分对 Wind, Hors ... -
如何比较两个有可能为null的实例
2008-11-09 16:37 816如何比较两个有可能为null的实例 以前在写程序 ... -
Java 理论与实践: 嗨,我的线程到哪里去了?
2008-11-21 21:11 683Java 理论与实践: 嗨,我的 ... -
详细解析Java中抽象类和接口的区别
2008-11-26 20:39 679详细解析Java中抽象类 ... -
Java获取系统所有进程(转)
2009-02-06 12:36 927代码比较简单,就不那么讲究了。一个 main 写了吧。 im ... -
MD5加密 Java代码
2008-12-15 19:29 806因为代码太长,无法贴上来,所以传到了网盘上,可以下载 点击下 ...
相关推荐
- **跨平台性**:Java的文件操作不受操作系统限制。 - **序列化接口**:用于将对象转换为字节流以便持久化。 - **I/O流基础**:如InputStream、OutputStream等。 - **流的分类**:字节流和字符流。 - **输入输出**:...
下面通过一个具体的例子来说明如何使用Java IO流进行文件拷贝。 ```java public class FileCopy { public void copy(File source, File dir) { InputStream is = null; OutputStream os = null; try { // 获取...
实现一个拷贝文件的类使用字节流还是字符串.mp4 │ Java面试题13.线程的实现方式 怎么启动线程怎么区分线程.mp4 │ Java面试题14.线程并发库和线程池的作用?.mp4 │ Java面试题15.设计模式和常用的设计模式.mp4 │ ...
- **`.java` 文件:** 包含 Java 源代码的文件。 - **编译:** 使用 `javac` 编译器将 `.java` 文件编译成 `.class` 文件。 - **`.class` 文件:** 包含编译后的字节码,可以被 JVM 执行。 #### 十、Java 标准库 -...
4. **使用OpenCV Java**:在Java项目中集成OpenCV,需要在`build.gradle`或`pom.xml`文件中引入`opencv-460.jar`作为依赖,并确保系统环境正确配置了DLL文件路径。此外,还需要了解OpenCV的基本概念,如图像矩阵表示...
- **Java继承特点**:Java不支持多重继承,但可以通过实现多个接口来模拟多重继承的效果。 - **父类(SuperClass)和子类(SubClass)的关系**:子类继承父类的属性和方法,并可以扩展或重写它们。 **7.3 多态...
1. 接口:接口是Java实现多继承的方式,了解接口的定义、实现与接口间的继承。 2. 抽象类:理解抽象类的特性,何时使用抽象类,以及抽象方法的定义与实现。 3. 构造器:掌握构造器的作用,深浅拷贝的概念,以及...
示例:文件拷贝案例 BIO 和 NIO 拷贝文件的区别操作系统的零拷贝 选择器(Selectors) 选择键(SelectionKey) 示例:简易的客户端服务器通信 集合 集合框架总览 -、Iterator Iterable ListIterator 二、Map 和 Collection...
4. **异常的分类** - 检查性异常:需要被捕获或声明。 - 运行时异常:在运行时抛出的异常,通常由于编程错误引起。 5. **声明异常(throws)** - 在方法签名中声明可能抛出的异常。 6. **throw** - 主动抛出...
Java IO 是 Java 语言中的一种基本输入/输出机制,用于实现数据的读取和写入。本文将从流的分类、流的转换、对象序列化、字节流和字符流的区别、对象克隆等方面对 Java IO 进行总结。 1. 流的分类 Java 中有两种...
- `java`: Java解释器,用于执行编译后的字节码文件。 ##### 1.4 集成开发环境 集成开发环境(IDE)是集成了代码编辑、编译、调试等功能于一体的开发工具,常用的Java IDE有Eclipse、IntelliJ IDEA等。 - **...
这个论坛的实现还涉及到MD5加密技术,确保用户数据的安全性。 【描述】提到的"已完成的论坛"意味着该项目已经是一个完整的、功能完善的系统。它展示了如何将不同技术有效地融合在一起,为用户提供了一个交互式的...
通过这些示例,我们可以看到如何利用Java中的字符流来进行高效的文件读写操作。使用BufferedReader和BufferedWriter等高级流类能够显著提高数据处理的速度和效率,尤其是在处理大量数据时尤为明显。此外,掌握这些...
- **Serializable接口**:Java通过实现此接口进行序列化和反序列化,可用于实现深拷贝。 面试中,对于以上知识点的深入理解和实际应用能力是评估候选人技能的关键。例如,面试官可能会问到如何优化集合性能,如何...
实现一个拷贝文件的工具类要使用字节流还是字符串 Java面试题13.线程的的实现方式?怎么启动线程?怎么区分线程? Java面试题14.线程并发库和线程池的作用 Java面试题15.设计模式和常用的设计模式 Java面试题16....
Java中不同数字类型之间的转换可以通过自动类型提升或显式的强制类型转换来实现。 **强制类型转换:** 当需要将一个较大的类型转换为较小的类型时,需要使用强制类型转换。 **转换的二种类型:** 1. **自动类型...
当Java程序被编译时,会生成一种名为字节码(.class文件)的中间形式。这种字节码可以被任何平台上的JVM解释执行。JVM负责将字节码转换成本地机器码,从而实现跨平台运行。 ##### 4. JRE和JDK的区别 - **JRE (Java...
- 文件操作:学习File类,进行文件的创建、读写和删除。 - 缓冲流:理解BufferedReader和BufferedWriter提高读写效率的作用。 - 转换流:学会使用InputStreamReader和OutputStreamWriter在字节流和字符流之间转换...
下面是一个使用字节流实现文件拷贝的示例代码: ```java public class TestCopy { public static void main(String[] args) { FileInputStream fis = null; BufferedInputStream bis = null; FileOutputStream ...