`
helin
  • 浏览: 150717 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

处理文件夹有空格问题及按系统方式打开文件

    博客分类:
  • java
阅读更多
[size=medium]取得文件路径:
String filePath=  xxx.class.getResource("/").getPath();
处理:
filePath=URLDecoder.decode(filePath);
完成.

按系统方式打开文件:
Runtime.getRuntime().exec("cmd /c start "+filePath);

=================================================================================
修改:

原用上面的方式按系统方式打开文件,结果出现空格问题,不好弄。最后想到Dos的8.3短文件名方式不会出现空格,,于是写了一个求短文件名的方法:
        /**
	 * 8.3DOS短文件名规则
	 * @param srcFileName
	 * @return
	 */
	private static String get8Dot3Name(String srcFileName) {
		StringBuffer sb;
		srcFileName = srcFileName.toUpperCase();
		if (srcFileName.getBytes().length > 8
				|| ((srcFileName.getBytes().length < 8) && srcFileName
						.indexOf(" ") >= 0)) {

			srcFileName = srcFileName.replaceAll(" ", "");
			sb = new StringBuffer(srcFileName);
			while (sb.indexOf(".") != sb.lastIndexOf(".")) {
				sb.setCharAt(sb.indexOf("."), ' ');
			}
			srcFileName = sb.toString().replaceAll("[ $<>;,=\"\\[\\]]", "");
			if (srcFileName.lastIndexOf('.') == srcFileName.length() - 1) {
				srcFileName = srcFileName
						.substring(0, srcFileName.length() - 1);
			}
			String name = null;
			String type = null;
			if (srcFileName.lastIndexOf(".") > -1) {

				name = srcFileName.substring(0, srcFileName.indexOf("."));
				type = srcFileName.substring(srcFileName.indexOf("."));

				if (name.getBytes().length > 8) {
					name = cut6Char(name);
				}
				if (type.getBytes().length > 4) {
					type = type.substring(0, 4);
				}
			} else {
				if (srcFileName.getBytes().length > 8) {
					name = cut6Char(srcFileName);
				} else {
					name = srcFileName;
				}
			}
			name += "~1";
			if (type != null) {
				name += type;
			}
			return srcFileName = name;
		}
		return srcFileName;
	}

	private static String cut6Char(String name) {
		byte[] bt = new byte[6];
		byte nameBytes[] = name.getBytes();
		for (int i = 0; i < 6; i++) {
			bt[i] = nameBytes[i];
		}
		name = new String(bt);
		return name;
	}
        /**
	 * 取得短文件名
	 */
	public static String getShortName(String filePath) {
		filePath=filePath.replaceAll("\\\\", "/");
		String[] str = filePath.split("/");
		for (int i = 0; i < str.length; i++) {
			str[i] = get8Dot3Name(str[i]);
		}
		StringBuffer sbf = new StringBuffer();
		for (int i = 0; i < str.length; i++) {
			sbf.append(str[i] );
			if(i!=str.length-1){
				sbf.append("\\");
			}
		}
		return sbf.toString();
	}


好。。。到这里先试了一把。。。——!结果出人意料。。。有的可以打开有的打不开。。。
原来我这个方法是只针对一个路径来做的。。也就是说相同目录下有多个文件可以得到这个路径,
于是上网又找,终于找到了。。
[color=violet]1.如何执行非系统注册的命令比如Windows的dir
请使用命令 "cmd /c dir"
其他情况类似
2.如何打开带空格的外部文件或文件夹
最基本的打开外部文件的方式 "cmd /c start 文件",若文件名有空格,则会出现错误,请使用以下方式解决
String[] cmd = new String[5];
cmd[0] = "cmd";
cmd[1] = "/c";
cmd[2] = "start";
cmd[3] = " ";
cmd[4] = filePath;
Process process = Runtime.getRuntime().exec(cmd);

或;
Process process = Runtime.getRuntime().exec("cmd /c start \"\" \"E:\\kk sd\\www.txt\"");

因为按找文档说明 start 命令之后首先是[title],再是[filepath],所以将title设置为 " "


3.调用外部程序来打开一个相应的文件
比如我们要使用Editplus来打开一个远程机器上的文件,可以这样

Runtime.getRuntime().exec("D:\\EditPlus 2\\EditPlus.exe"+" "+\\\\172.16.1.6\\server1\\SystemErr.log)即
Runtime.getRuntime().exec("外部程序位置"+" "+"要打开的文件").
以此方式可以忽略空格的问题

4.截取控制台的信息.
使用JAVA输入流的方式.
Runtime.getRuntime().exec(..)获取的Process;
Process pro = Runtime.getRuntime().exec(..);
InputStreamReader isr = new InputStreamReader (pro.getInputStream());
//todo 使用输入流进行操作就可以了.[/color]


另外JDK6也提供了一种方式
Desktop dsk=DeskTop.getDesktop();
dsk.open(new File(filePath));
[/size]
分享到:
评论
2 楼 helin 2009-03-03  
wxlwxq 写道

如果是带数字和小数点,结果会不对

因为找到了系统命令,解决了当时的问题.所以也就没有多做测试,上面也说了,有打可以打开,有的打不开..说明有问题的.~~~~——!
网上也有好多例子,如果用.net会很容易做到,这里只是一个简单的算法,8.3命名规则要考虑好些情况.比如如果只有一个文件,那么取这个文件的短文件名可以,但是如果有多个文件,取得短文件名一样,8.3命名规则会按数字排列,因为当时不可能把所有的都算出来,然后再排一下,操作系统知道哪个在前哪个在后.:),就用原生的吧~
1 楼 wxlwxq 2009-02-19  
如果是带数字和小数点,结果会不对

相关推荐

    chrome打开共享文件夹完美方案

    背景 在IE8下通过a标签的href="本地路径"可以打开,但是chrome以及firefox不可以。 原因:在IE中输入file:///c:...最后在bat脚本里根据文件【cmdInput.txt】里面的路径直接使用shexec"open"命令打开文件或文件夹。

    创建与处理处理删不掉的文件夹大全

    另一种创建不可删除文件夹的方法是利用NTFS文件系统的特性,创建一个名字包含连续空格的文件夹,如`D:/ / `。创建和删除的命令如下: 创建: ``` MD "D:/ / " ``` 删除: ``` RD /Q /S "D:/ / " ``` 还有一种特殊...

    linux c 实现遍历指定路径下的文件夹及文件

    在Linux系统中,C语言是实现底层操作的强大工具,其中包括遍历指定路径下的所有文件和文件夹。这个程序的核心在于使用Linux系统调用,如`opendir()`、`readdir()`和`closedir()`,来读取目录内容,并通过递归的方式...

    批处理,实现循环读取文本文件,每行内容作为文件夹名称,自动创建文件夹

    批处理(Batch Processing)是Windows操作系统中的一种命令脚本技术,它允许用户通过编写简单的文本文件(如.bat或.cmd文件)来执行一系列连续的操作。在本案例中,我们有两个核心文件:`create.bat` 和 `dept_list....

    bat批处理文件实现复制、删除、创建文件夹、执行程序、打开文件

    要包含上一示例中的任何系统或隐藏文件,请按如下所示添加 /h 命令行选项: xcopy a:b:/s /e /h 要使用 \Rawdata 目录中 1993 年 12 月 29 日后更改的文件更新 \Reports 目录中的文件,请键入: xcopy \rawdata ...

    实验02++Windows+文件和文件夹的操作

    5. **显示隐藏文件和扩展名**:通过【工具】菜单的【文件夹选项】,可以在【查看】选项卡中设置显示隐藏文件和文件的扩展名,这对于查看系统文件或解决某些问题时很有帮助。 6. **自定义工具栏**:用户可以根据自己...

    使用dos命令显示被隐藏文件+批量创建文件夹+复制文件夹,不复制文件+建立特殊文件夹

    在DOS中,我们可以创建一些具有特殊字符或名称的文件夹,例如带有空格、引号、特殊符号等的文件夹。只需在命令提示符中输入创建命令,例如: ``` mkdir "我的 文件夹" ``` 注意,如果文件夹名包含空格或其他特殊...

    Beycomp文件,文件夹对比工具

    总的来说,Beycomp是一款强大且易用的文件和文件夹对比工具,无论你是开发人员、系统管理员还是普通用户,都能从中受益。通过它的帮助,你可以准确地了解两个文件或文件夹之间的差异,从而更好地管理和维护你的数据...

    如何提取文件夹中给所有文件名称

    双击运行此.bat文件,系统会生成一个名为"文件名.txt"的文本文件,其中包含了该文件夹及其所有子文件夹中的所有文件名。 方法二: 这个方法结合了DOS命令和Excel的数据导入功能。首先,在DOS环境下或者Windows的MS-...

    破解或解决文件夹解密后无文件的问题.pdf

    由于sys文件夹名后有空格,直接重命名可能会遇到问题,这时可以借助Win PE工具进行重命名,例如将sys改为t2。 在t2文件夹内,可能存在一个名为system.的文件夹,由于其名称包含点号(.),在Windows中无法直接打开...

    破解或解决文件夹解密后无文件的问题归纳.pdf

    本文主要介绍了如何解决文件夹解密后无文件显示的问题,这是一个常见的问题,可能由于文件被加密或隐藏导致。下面将详细解析整个解密过程。 首先,遇到这种情况,我们需要对文件进行加密或解密操作。这通常涉及到...

    Windiff 文件比较/文件夹比较工具

    首先,打开软件并指定需要比较的两个文件或文件夹。然后,软件会自动分析并呈现结果。用户可以选择横向或纵向视图来查看差异,甚至可以合并两个文件或文件夹中的内容。对于编程人员,Windiff还提供了命令行版本,...

    文件对比工具(文件、文件夹)

    在描述中提到的"选中两个文件(夹) 鼠标右键打开 比较是否相同"这一操作,正是使用了这种工具的典型方式。通过鼠标右键菜单选择对比功能,可以快速启动对比过程,查看两个文件的异同。 对于文本文件,对比工具通常会...

    批处理bat文件实现复制、删除、创建文件夹、执行程序、打开文件

    ### 批处理bat文件实现复制、删除、创建文件夹、执行程序、打开文件 #### 一、批处理脚本概述 批处理脚本是通过Windows操作系统提供的命令行工具编写的一系列命令集合,这些命令可以自动执行一系列的任务。批处理...

    不错的文件比较工具,支持文件夹比较

    此外,软件还支持合并冲突,这对于使用版本控制系统的团队尤其重要,因为它可以帮助解决多人协作时可能出现的文件冲突问题。 总之,Beyond Compare是一款强大的工具,能够帮助用户高效地比较和同步文件与文件夹,...

    行业分类-设备装置-文件夹创建方法及装置.zip

    本资料“行业分类-设备装置-文件夹创建方法及装置.zip”着重介绍了如何在不同操作系统下创建文件夹以及与设备装置相关的文件组织策略。下面将详细阐述相关知识点。 首先,我们来了解文件夹创建的基本步骤。在...

    高速批量删除文件和文件夹主要解决「被其他程序打开的文件和文件夹」无法删除的文件.exe

    一款适用于 Windows 的工具,具有多种功能,包括高速删除文件和文件夹,可...或空格结尾的文件夹,能解决被其他程序打开的文件和文件夹无法删除的问题,还可删除映射文件、正在运行的程序以及正被使用的动态运行库。

    TXT文件批量处理工具.rar

    其他处理方式:包括添加文件夹、重命名、恢复备份文件、查找个数、转换编码、重新排序。 26、添加文件夹,就是直接添加一个文件夹,说明添加文件或者添加文件夹的时候,如果已经存在则跳过添加。说明:添加文件夹的...

    电脑全盘感染病毒后文件夹隐藏属性无法更改的解决办法

    - 如果仍有部分文件夹无法正常修改属性,可能是由于病毒残留或系统权限问题,此时建议再次进行全盘扫描或咨询专业人士。 通过上述方法,我们可以有效地解决电脑全盘感染病毒后文件夹隐藏属性无法更改的问题。需要...

    把程序添加到打开方式的方法

    在日常电脑使用过程中,我们经常会遇到需要将特定程序设置为特定文件类型的默认打开方式,或者想要更换文件的打开程序,但由于系统限制或注册表设置的问题,有时候会出现无法将程序添加到打开方式的情况。...

Global site tag (gtag.js) - Google Analytics