取到文件名部分相同的文件

import java.io.File;
import java.util.Vector;

public class A {
 public static void recursion(String root, Vector<String> vecFile) {
  File file = new File(root);
  File[] subFile = file.listFiles();
  for (int i = 0; i < subFile.length; i++) {
   if (subFile[i].isDirectory()) {
    recursion(subFile[i].getAbsolutePath(), vecFile);
   } else {
    String filename = subFile[i].getName();
    vecFile.add(filename);
   }
  }
 }

 public static void main(String[] args) {
  Vector<String> vecFile = new Vector<String>();
  recursion("E:/A", vecFile);
 
  for (String fileName : vecFile) {
   System.out.println(fileName);
  }
 }
}
=================
文件名都给你打出来了,你还想咋处理????
=================
得不到,文件名只不过是一个字符串,没有任何实际意义,除非得到文件名的时候得到文件大小。我给你改了下,Vector里放的是File而不是文件名了,你想干啥都行了
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Vector;

public class A {
 public static void recursion(String root, Vector<File> vecFile) {
  File file = new File(root);
  File[] subFile = file.listFiles();
  for (int i = 0; i < subFile.length; i++) {
   if (subFile[i].isDirectory()) {
    recursion(subFile[i].getAbsolutePath(), vecFile);
   } else {
    vecFile.add(subFile[i]);
   }
  }
 }

 public static void main(String[] args) throws FileNotFoundException, IOException {
  Vector<File> vecFile = new Vector<File>();
  recursion("E:/A", vecFile);
 
  for (File file : vecFile) {
   System.out.println(file.getName() + "  " + new FileInputStream(file).available());
  }
 }
}
******************************************************************************
public   static   void   main(String[]   args){
                OutputStream   out   =
new   FileOutputStream( "./listFile.txt ");
getFileNames(new   File( "c:/ "),   out);
out.close();
  }

public   static   void   getFileNames(File   inpath,   OutputStream   os)
throws   IOException   {
File[]   files   =   inpath.listFiles();
for   (int   i   =   0;   i   <   files.length;   i++)   {
File   file   =   files[i];
//文件内容
System.out.println(file.getCanonicalPath());

if   (file.isDirectory())   {
//目录,   递归调用
getFileNames(file);
}   else   {
  //文件,   输出到文件
byte[]   bs   =   file.getCanonicalPath().getBytes();
os.write(bs,   0,   bs.length());
output.write( '\n ');
}
}
}
****************************************************************************
上面方法也可以,我这种直接就可以得到名字,不需要先转化为File对象
File file=new File("D:\\");
 String test[];
 test=file.list();
 for(int i=0;i<test.length;i++)
 {
  System.out.println(test[i]);
 }
***********************************************************************
检查磁盘上指定目录是否已经存在同名文件(本代码是检查.jpg文件类型),存在三种情况:
  * 1:不存在,返回查询的名称
           如:输入abc,返回abc
  * 2:存在一个名称相同的文件,返回“预定义的名称+当前日期+001”的新名称
           如:存在一个叫abc.jpg的文件,输入abc,返回abc20101227001
  * 3:存在多个前缀名相同的文件,则返回比编号最大的文件大一个编号的名称

           如:存在abc.jpg,abc20101227001,abc20101227002,…,abc201012270023的文件,输入abc,返回abc20101227024

======================代码开始==================


import java.io.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class FileDirectorySearch {

 /**
  * 创建查询指定目录下文件的方法
  *
  * @param allList
  *            指定目录
  * @param endName
  *            指定以“”结尾的文件
  * @return 得到的文件数目
  */
 public int findTxtFileCount(File allList, String endName) {
  int textCount = 0;
  // 创建fileArray名字的数组
  File[] fileArray = allList.listFiles();
  // 如果传进来一个以文件作为对象的allList 返回0
  if (null == fileArray) {
   return 0;
  }
  // 偏历目录下的文件
  for (int i = 0; i < fileArray.length; i++) {
   // 如果是个目录
   if (fileArray[i].isDirectory()) {
    // System.out.println("目录: "+fileArray[i].getAbsolutePath());
    // 递归调用
    textCount += findTxtFileCount(fileArray[i].getAbsoluteFile(),
      endName);
    // 如果是文件
   } else if (fileArray[i].isFile()) {
    // 如果是以“”结尾的文件
    if (fileArray[i].getName().endsWith(endName)) {
     // 展示文件
     System.out.println("exe文件: "
       + fileArray[i].getAbsolutePath());
     // 所有以“”结尾的文件相加
     textCount++;
    }
   }
  }
  return textCount;

 }

 /**
  * 在本文件夹下查找
  *
  * @param s
  *            String 文件名
  * @return File[] 找到的文件
  */
 public static File[] getFiles(String s) {
  return getFiles("./", s);
 }

 /**
  * 获取文件 可以根据正则表达式查找
  *
  * @param dir
  *            String 文件夹名称
  * @param s
  *            String 查找文件名,可带*.?进行模糊查询
  * @return File[] 找到的文件
  */
 public static File[] getFiles(String dir, String s) {
  // 开始的文件夹
  File file = new File(dir);
  s = s.replace('.', '#');
  s = s.replaceAll("#", "\\\\.");
  s = s.replace('*', '#');
  s = s.replaceAll("#", ".*");
  s = s.replace('?', '#');
  s = s.replaceAll("#", ".?");
  s = "^" + s + "$";

  Pattern p = Pattern.compile(s);
  ArrayList list = filePattern(file, p);
  File[] rtn = new File[list.size()];
  list.toArray(rtn);
  return rtn;
 }

 /**
  * @param file 起始文件夹路径
  * @param Pattern 匹配类型
  * @return ArrayList 其文件夹下的文件夹
  */
 private static ArrayList filePattern(File file, Pattern p) {
  //判断传进来的路径是否为null
  if (file == null) {
   return null;
  } else if (file.isFile()) {    //测试此抽象路径名表示的文件是否是一个标准文件
   Matcher fMatcher = p.matcher(file.getName()); //p.matcher(file.getName())编译给定正则表达式,并尝试将给定输入与其匹配
   if (fMatcher.matches()) {   //尝试将整个区域与模式匹配
    ArrayList list = new ArrayList();
    list.add(file);
    return list;
   }
  } else if (file.isDirectory()) {  //测试此抽象路径名表示的文件是否是一个目录
   File[] files = file.listFiles(); //获取此目录下文件的绝对路径,并返回一个数组
   if (files != null && files.length >= 0) {
    ArrayList list = new ArrayList();
    for (int i = 0; i < files.length; i++) {
     ArrayList rlist = filePattern(files[i], p);  //递归调用,查看所有文件夹下面的文件
     if (rlist != null) {
      list.addAll(rlist);
     }
    }
    return list;
   }
  }
  return null;
 }
 
 /**
  * 获取数组里的最大值
  * @param filenames
  * @return
  */
 private long findMaxNumber(String[] filenames){
  String max=filenames[0];
  int temp;
  for (int i = 1; i < filenames.length; i++) {
   temp=filenames[i].compareTo(max);
   if (temp>0) {
    max=filenames[i];
   }
  }
  return Long.parseLong(max);
 }

 /**
  * 检查磁盘上是否已经存在此文件,存在三种情况:
  * 1:如果不存在,返回预定义的名称
  * 2:如果存在一个名称相同的文件,返回与预定义的名称+当前日期+001
  * 3:如果存在多个前缀名相同的文件,则返回比最新的文件大一个编号的文件名称
  * @param filePath 文件的目录
  * @param fileName 预定义的文件名称
  * @return 最终的文件名称
  */
 public String checkFileCount(String filePath, String fileName) {
  // 获取xxx目录下所有的.JPG类型文件名称(大写)
  File[] files = FileDirectorySearch.getFiles(filePath, fileName+ "*.jpg");
  //获取文件个数
  int count=files.length;
 
  //如果没有这个文件,直接返回文件名称
  if (count==0) {
   return fileName;
  }else if (count==1) {
   //获取当前日期
   Date date =new Date();
   //格式化日期格式
   DateFormat dateformat=new SimpleDateFormat("yyyyMMdd");
   String riqi=dateformat.format(date);
   riqi+="001";
   //生成新的文件名称
   fileName+=riqi;
   return fileName;
  }else{
   //定义一个字符串数组,来接收字符串截取后的值
   String[] filenames = new String[count];
   //定义截取字符串的开始位置和结束位置和fileName的长度
   int beginIndex,endIndex,fileNameLength;
   for (int i = 0; i < files.length; i++) {
    filenames[i]=files[i].toString();
    System.out.println(filenames[i]+"  ");

    //获取文件名称第一次出现的位置
    beginIndex=filenames[i].indexOf(fileName);
    //获取文件名称第一次出现".jpg"的位置
    endIndex=filenames[i].indexOf(".jpg");
    //获取文件的名称的长度
    fileNameLength=fileName.length();
    //截取字符串
    filenames[i]=filenames[i].substring(beginIndex+fileNameLength, endIndex);
   }
   //获取最新的编号,并且加1,如原先名称为"我爱你20101225",则新的编号为"我爱你20101226",保证不会和原先的文件名重复
   long maxNumber= this.findMaxNumber(filenames);
   maxNumber++;
   //生成新的文件名称
   fileName+=maxNumber;
   return fileName;
  }
 }
 
 public static void main(String[] args) {
  //可在此初始化路径和文件名称,以便测试
  String fName = "美女";
  String fPath = "G:/图片素材/MM";
  FileDirectorySearch star = new FileDirectorySearch();
  System.out.println(star.checkFileCount(fPath, fName));
 }
}

===================代码结束======================
************************************************************************
package com.xhkj.util;
 
  import java.io.File;
 
  import java.io.IOException;
 
  public class CreateFileUtil {
 
  public static boolean CreateFile(String destFileName) {
 
  File file = new File(destFileName);
 
  if (file.exists()) {
 
  System.out.println("创建单个文件" + destFileName + "失败,目标文件已存在!");
 
  return false;
 
  }
 
  if (destFileName.endsWith(File.separator)) {
 
  System.out.println("创建单个文件" + destFileName + "失败,目标不能是目录!");
 
  return false;
 
  }
 
  if (!file.getParentFile().exists()) {
 
  System.out.println("目标文件所在路径不存在,准备创建。。。");
 
  if (!file.getParentFile().mkdirs()) {
 
  System.out.println("创建目录文件所在的目录失败!");
 
  return false;
 
  }
 
  }
 
  // 创建目标文件
 
  try {
 
  if (file.createNewFile()) {
 
  System.out.println("创建单个文件" + destFileName + "成功!");
 
  return true;
 
  } else {
 
  System.out.println("创建单个文件" + destFileName + "失败!");
 
  return false;
 
  }
 
  } catch (IOException e) {
 
  e.printStackTrace();
 
  System.out.println("创建单个文件" + destFileName + "失败!");
 
  return false;
 
  }
 
  }
 
  public static boolean createDir(String destDirName) {
 
  File dir = new File(destDirName);
 
  if(dir.exists()) {
 
  System.out.println("创建目录" + destDirName + "失败,目标目录已存在!");
 
  return false;
 
  }
 
  if(!destDirName.endsWith(File.separator))
 
  destDirName = destDirName + File.separator;
// 创建单个目录
 
  if(dir.mkdirs()) {
 
  System.out.println("创建目录" + destDirName + "成功!");
 
  return true;
 
  } else {
 
  System.out.println("创建目录" + destDirName + "成功!");
 
  return false;
 
  }
 
  }
 
  public static String createTempFile(String prefix, String suffix, String dirName) {
 
  File tempFile = null;
 
  try{
 
  if(dirName == null) {
 
  // 在默认文件夹下创建临时文件
 
  tempFile = File.createTempFile(prefix, suffix);
 
  return tempFile.getCanonicalPath();
 
  }
 
  else {
 
  File dir = new File(dirName);
 
  // 如果临时文件所在目录不存在,首先创建
 
  if(!dir.exists()) {
 
  if(!CreateFileUtil.createDir(dirName)){
 
  System.out.println("创建临时文件失败,不能创建临时文件所在目录!");
 
  return null;
 
  }
 
  }
 
  tempFile = File.createTempFile(prefix, suffix, dir);
 
  return tempFile.getCanonicalPath();
 
  }
 
  } catch(IOException e) {
 
  e.printStackTrace();
 
  System.out.println("创建临时文件失败" + e.getMessage());
 
  return null;
 
  }
 
  }
 
  public static void main(String[] args) {
 
  // 创建目录
 
  String dirName = "c:/test/test0/test1";
 
  CreateFileUtil.createDir(dirName);
 
  // 创建文件
 
  String fileName = dirName + "/test2/testFile.txt";
 
  CreateFileUtil.CreateFile(fileName);
 
  // 创建临时文件
 
  String prefix = "temp";
 
  String suffix = ".txt";
 
  for(int i = 0; i < 10; i++) {
 
  System.out.println("创建了临时文件:" + CreateFileUtil.createTempFile(prefix, suffix, dirName));
 
  }
 
  }
 
  }
*****************************************************************************
import java.io.*;

public class FileOperate {
   public FileOperate() {
   }

   /**
     * 新建目录
     * @param folderPath String 如 c:/fqf
     * @return boolean
     */
   public void newFolder(String folderPath) {
       try {
           String filePath = folderPath;
           filePath = filePath.toString();
           java.io.File myFilePath = new java.io.File(filePath);
           if (!myFilePath.exists()) {
               myFilePath.mkdir();
           }
       }
       catch (Exception e) {
           System.out.println("新建目录操作出错");
           e.printStackTrace();
       }
   }

   /**
     * 新建文件
     * @param filePathAndName String 文件路径及名称 如c:/fqf.txt
     * @param fileContent String 文件内容
     * @return boolean
     */
   public void newFile(String filePathAndName, String fileContent) {

       try {
           String filePath = filePathAndName;
           filePath = filePath.toString();
           File myFilePath = new File(filePath);
           if (!myFilePath.exists()) {
               myFilePath.createNewFile();
           }
           FileWriter resultFile = new FileWriter(myFilePath);
           PrintWriter myFile = new PrintWriter(resultFile);
           String strContent = fileContent;
           myFile.println(strContent);
           resultFile.close();

       }
       catch (Exception e) {
           System.out.println("新建文件操作出错");
           e.printStackTrace();

       }

   }

   /**
     * 删除文件
     * @param filePathAndName String 文件路径及名称 如c:/fqf.txt
     * @param fileContent String
     * @return boolean
     */
   public void delFile(String filePathAndName) {
       try {
           String filePath = filePathAndName;
           filePath = filePath.toString();
           java.io.File myDelFile = new java.io.File(filePath);
           myDelFile.delete();

       }
       catch (Exception e) {
           System.out.println("删除文件操作出错");
           e.printStackTrace();

       }

   }

   /**
     * 删除文件夹
     * @param filePathAndName String 文件夹路径及名称 如c:/fqf
     * @param fileContent String
     * @return boolean
     */
   public void delFolder(String folderPath) {
       try {
           delAllFile(folderPath); //删除完里面所有内容
           String filePath = folderPath;
           filePath = filePath.toString();
           java.io.File myFilePath = new java.io.File(filePath);
           myFilePath.delete(); //删除空文件夹

       }
       catch (Exception e) {
           System.out.println("删除文件夹操作出错");
           e.printStackTrace();

       }

   }

   /**
     * 删除文件夹里面的所有文件
     * @param path String 文件夹路径 如 c:/fqf
     */
   public void delAllFile(String path) {
       File file = new File(path);
       if (!file.exists()) {
           return;
       }
       if (!file.isDirectory()) {
           return;
       }
       String[] tempList = file.list();
       File temp = null;
       for (int i = 0; i < tempList.length; i++) {
           if (path.endsWith(File.separator)) {
               temp = new File(path + tempList[i]);
           }
           else {
               temp = new File(path + File.separator + tempList[i]);
           }
           if (temp.isFile()) {
               temp.delete();
           }
           if (temp.isDirectory()) {
               delAllFile(path+"/"+ tempList[i]);//先删除文件夹里面的文件
               delFolder(path+"/"+ tempList[i]);//再删除空文件夹
           }
       }
   }

   /**
     * 复制单个文件
     * @param oldPath String 原文件路径 如:c:/fqf.txt
     * @param newPath String 复制后路径 如:f:/fqf.txt
     * @return boolean
     */
   public void copyFile(String oldPath, String newPath) {
       try {
           int bytesum = 0;
           int byteread = 0;
           File oldfile = new File(oldPath);
           if (oldfile.exists()) { //文件存在时
               InputStream inStream = new FileInputStream(oldPath); //读入原文件
               FileOutputStream fs = new FileOutputStream(newPath);
               byte[] buffer = new byte[1444];
               int length;
               while ( (byteread = inStream.read(buffer)) != -1) {
                   bytesum += byteread; //字节数 文件大小
                   System.out.println(bytesum);
                   fs.write(buffer, 0, byteread);
               }
               inStream.close();
           }
       }
       catch (Exception e) {
           System.out.println("复制单个文件操作出错");
           e.printStackTrace();

       }

   }

   /**
     * 复制整个文件夹内容
     * @param oldPath String 原文件路径 如:c:/fqf
     * @param newPath String 复制后路径 如:f:/fqf/ff
     * @return boolean
     */
   public void copyFolder(String oldPath, String newPath) {

       try {
           (new File(newPath)).mkdirs(); //如果文件夹不存在 则建立新文件夹
           File a=new File(oldPath);
           String[] file=a.list();
           File temp=null;
           for (int i = 0; i < file.length; i++) {
               if(oldPath.endsWith(File.separator)){
                   temp=new File(oldPath+file[i]);
               }
               else{
                   temp=new File(oldPath+File.separator+file[i]);
               }

               if(temp.isFile()){
                   FileInputStream input = new FileInputStream(temp);
                   FileOutputStream output = new FileOutputStream(newPath + "/" +
                           (temp.getName()).toString());
                   byte[] b = new byte[1024 * 5];
                   int len;
                   while ( (len = input.read(b)) != -1) {
                       output.write(b, 0, len);
                   }
                   output.flush();
                   output.close();
                   input.close();
               }
               if(temp.isDirectory()){//如果是子文件夹
                   copyFolder(oldPath+"/"+file[i],newPath+"/"+file[i]);
               }
           }
       }
       catch (Exception e) {
           System.out.println("复制整个文件夹内容操作出错");
           e.printStackTrace();

       }

   }

   /**
     * 移动文件到指定目录
     * @param oldPath String 如:c:/fqf.txt
     * @param newPath String 如:d:/fqf.txt
     */
   public void moveFile(String oldPath, String newPath) {
       copyFile(oldPath, newPath);
       delFile(oldPath);

   }

   /**
     * 移动文件夹到指定目录
     * @param oldPath String 如:c:/fqf.txt
     * @param newPath String 如:d:/fqf.txt
     */
   public void moveFolder(String oldPath, String newPath) {
       copyFolder(oldPath, newPath);
       delFolder(oldPath);

   }
}

你可能感兴趣的:(文件,文件名,取到,部分相同)