服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

用java将文件名从中文转为拼音

  将指定目录下面得所有文件名从中文转化为拼音,并保存为html,其中拼音和汉字对照得文件可以通过windows自带得程序获得。又是一个小程序。



  public class hanzipinyin
  {
  public static void change(string path, string paths, string savepaths)
  {
  
  file d = new file(paths);
  //取得当前文件夹下所有文件和目录的列表
  file lists[] = d.listfiles();
  string pathss = new string("");

  //对当前目录下面所有文件进行检索
  for(int i = 0; i < lists.length; i ++)
  {
  if(lists[i].isfile())
  {
  //得到doc文件名
  string filename = lists[i].getname();
  //定义最简文件名
  string realfilename = new string(filename.substring(0,
  (filename.length() - 4)));
  
  //定义文件全名为路径加文件名
  string fullsavefilename = paths + realfilename;
  fullsavefilename = fullsavefilename.replace('//', '_');
  fullsavefilename = fullsavefilename.replace(':', '@');
  fullsavefilename = fullsavefilename.substring(
  47, fullsavefilename.length());

  //定义文件类型
  string filetype = new string("");

  filetype = filename.substring((filename.length() - 3),
  filename.length());
  
  if(filetype.equals("doc"))
  {
  system.out.println("--------/n当前正在转换......");
  //打印当前目录路径
  system.out.println(paths);
  //打印doc文件名
  system.out.println(realfilename);
  
  //启动word
  activexcomponent app =
  new activexcomponent("word.application");
  
  string docpath = paths + filename;
  string txtpath = savepaths + fullsavefilename + ".htm";
  
  //格式化文件名
  txtpath = formatname(txtpath);    
  //将中文文件名改为拼音
  txtpath = pinyin(path, txtpath);



  

  //要转换的word文件
  string infile = docpath;
  //txt文件
  string tpfile = txtpath;

  boolean flag = false;
  
  try
  {
  //设置word不可见
  app.setproperty("visible", new variant(false));
  object docs = app.getproperty("documents").todispatch();
  //打开word文件
  object doc = dispatch.invoke(docs,"open",
  dispatch.method, new object[]{infile,
  new variant(false), new variant(true)},
  new int[1]).todispatch();
  //作为txt格式保存到临时文件
  dispatch.invoke(doc,"saveas", dispatch.method,
  new object[]{tpfile,new variant(10)},
  new int[1]);
  variant f = new variant(false);
  dispatch.call(doc, "close", f);
  flag = true;
  }
  catch (exception e)
  {
  e.printstacktrace();
  }
  finally
  {
  app.invoke("quit", new variant[] {});
  }
  system.out.println("转化完毕!/n--------");
  }
  }
  else
  {
  pathss = paths;
  //进入下一级目录
  pathss = pathss + lists[i].getname() + "//";   
  //递归遍历所有目录
  change(path, pathss, savepaths);
  }
  }
  
  }
  
  public static string formatname(string name)
  {
  name = name.replace('、', '_');
  name = name.replace(')', ')');
  name = name.replace('(', '(');
  return name;
  }
  
  public static string pinyin(string path, string hanzi)
  {
  file f = new file(path);
  string pinyin = new string("");
  pinyin = hanzi;




  try
  {
  filereader fr = new filereader(f);
  bufferedreader br = new bufferedreader(fr);
  string line = new string("");

  line = br.readline();
  int count = 0;
  int location = 0;
  while(line != null)
  {
  while(pinyin.indexof(line.charat(0)) != -1)
  {
  location = pinyin.indexof(line.charat(0));
  pinyin = pinyin.substring(0, location) +
  line.substring(1, 2) +
  pinyin.substring(location + 1, pinyin.length());
  }
  line = br.readline();
  system.out.print("/b/b/b/b/b/b" + count++);
  }
  fr.close();
  br.close();  
  }
  catch(exception e)
  {
  //   system.err.println(e);
  }
  return pinyin;
  }
  
  
  public static void main(string[] args)
  {
  
  string paths = new string("d://work//2004.10.8//test system//test01//word//");
  string savepaths = new string ("d://work//2004.10.8//test system//test01//html//");
  string path = new string("d://test//file//pinyin.txt");
  
  change(path, paths, savepaths);

  }
  }


  其中拼音和汉字对照得文件可以通过windows自带得程序获得。

扫描关注微信公众号