将路径与文件名组合的最佳方法是什么?
也就是说,给予c:\foo
和bar.txt
,我想要c:\foo\bar.txt
.
鉴于c:\foo
和..\bar.txt
,我想要一个错误或c:\foo\bar.txt
(所以我不能Path.Combine()
直接使用).同样的c:\foo
和bar/baz.txt
,我想要一个错误或c:\foo\baz.txt
(不c:\foo\bar\baz.txt
).
我意识到,我可以检查文件名不包含'\'或'/',但这还够吗?如果没有,那么正确的检查是什么?
我正在制作一个跨平台的应用程序,它根据在线检索的数据重命名文件.我想清理我从当前平台的Web API中获取的字符串.
我知道不同的平台有不同的文件名要求,所以我想知道是否有跨平台的方式来做到这一点?
编辑:在Windows平台上,您不能有问号'?' 在文件名中,而在Linux中,您可以.文件名可能包含这些字符,我希望支持这些字符的平台保留它们,否则,将它们删除.
此外,我更喜欢不需要第三方库的标准Java解决方案.
这是一个学生的问题,我没有得到一个好的答案.有时,我见过.pickle
,.pck
,.pcl
,和.db
对于包含Python的泡菜,但我不能确定什么是最常见的或最佳实践文件.我知道后三个扩展也用于其他事情.
相关问题是在使用REST API的系统之间发送pickle的首选MIME类型是什么?
有没有办法转换这个:
/C:/Users/David/Dropbox/My%20Programs/Java/Test/bin/myJar.jar
Run Code Online (Sandbox Code Playgroud)
进入这个?:
C:\Users\David\Dropbox\My Programs\Java\Test\bin\myJar.jar
Run Code Online (Sandbox Code Playgroud)
我使用以下代码,它将返回.JAR存档的完整路径或/ bin目录.
fullPath = new String(MainInterface.class.getProtectionDomain()
.getCodeSource().getLocation().getPath());
Run Code Online (Sandbox Code Playgroud)
问题是,getLocation()
返回一个URL
,我需要一个正常的Windows文件名.我尝试过以后添加以下内容getLocation()
:
toString()
并且toExternalForm()
都返回:
file:/C:/Users/David/Dropbox/My%20Programs/Java/Test/bin/
Run Code Online (Sandbox Code Playgroud)
getPath()
收益:
/C:/Users/David/Dropbox/My%20Programs/Java/Test/bin/
Run Code Online (Sandbox Code Playgroud)
请注意%20
哪些应转换为空格.
有这么简单快捷的方法吗?
当我保存带有.htm或.html扩展名的文件时,哪一个是正确的,哪些是不同的?
public static boolean isValidName(String text)
{
Pattern pattern = Pattern.compile("^[^/./\\:*?\"<>|]+$");
Matcher matcher = pattern.matcher(text);
boolean isMatch = matcher.matches();
return isMatch;
}
Run Code Online (Sandbox Code Playgroud)
此方法是否保证Windows上的有效文件名?
在python(和其他一些语言)我学到了,类的名称应该用小写字母写,除了第一个字母,它应该是大写字母.例:
class FooBar:
...
Run Code Online (Sandbox Code Playgroud)
类应该放在一个文件中,名称与类相同.在这个例子中,它将是一个文件foobar.py
.如果我想在foo
某处导入该类,我必须这样做:
from foobar import FooBar
Run Code Online (Sandbox Code Playgroud)
这个惯例让我有些困惑.我的直觉告诉我,如果文件名表示一个类,那么它应该用大写的第一个字母写,也就是说FooBar.py
.这在文件名中看起来并不漂亮.也许有人可以告诉我这是什么标准惯例?
我希望我的问题可以理解.:-)
如果我想创建一个保证不代表文件名的字符串,我可以在Windows上放入以下字符之一:
\ / : * ? | < >
Run Code Online (Sandbox Code Playgroud)
例如
this-is-a-filename.png
?this-is-not.png
Run Code Online (Sandbox Code Playgroud)
有没有办法在Linux上将字符串标识为"不太可能是文件"?
Android上的文件名允许哪些特殊字符?
~!@#$%^&*()_+/\.,
Run Code Online (Sandbox Code Playgroud)
另外,我可以用Unicode名称保存文件吗?
假设我有变量dir
并且分别file
包含表示目录和文件名的字符串.emacs lisp将它们连接到文件的完整路径的正确方法是什么?
例如,如果dir
是"/usr/bin"
和file
是"ls"
的话,我想"/usr/bin/ls"
.但是,如果不是dir
就是"/usr/bin/"
,我还是希望同样的事情,没有重复的斜线.