我正在尝试获取位于 java jar 之外的文件的路径,但我不想使用绝对路径。一个例子:假设 jar 位于 ~/lib/myjar.jar 并且该文件位于同一文件夹中。我尝试的是这样的,但失败了:
File myfile = new File(this.getClass().getResource("../../../").toURI());
Run Code Online (Sandbox Code Playgroud)
注意:我的包是 com.contro.gui,这就是为什么我有“../../../”,以便访问“root”
我不确定如何访问该文件。有什么建议吗??如果我要访问的文件位于 ~/res/ 这样的其他文件夹中怎么办?
如果你有一个像"C:\ foo \.\ bar\.."的路径,有一种简单的方法使用Win32 API删除目录限定符,以便将其简化为"C:\ foo"?
更新:这似乎是一个更复杂的问题.在这个简单的"C:\ foo \.\ bar\.."示例中,它与PathCanonicalize()和GetFullPathName()一起使用以获得"C:\ foo"作为结果.
但是,我传递的路径有一个符号链接.所以,假设我传入的是"C:\ NaNa\Boo\Bin\..","C:\ NaNa"是指向"D:\ Apple"的链接.然后我得到"C:\ NaNa\Boo\Bin\.."回复率比"C:\ NaNa\Boo"
我会假设函数只使用字符串,但使用符号链接似乎有所不同:-(
更新#2:看来我传入的字符串中有换行符(0x0d),这使得函数无法正常工作!
虽然我可以建立一个路径名,例如
(make-pathname :directory '(:RELATIVE "dir" "subdir" "subsubdir"))
Run Code Online (Sandbox Code Playgroud)
我如何subsubdir从这样的路径名回来(假设它是一个目录)?我需要从路径名中提取最后一个dir,就像这个Unix命令一样:
$ basename /usr/local/share/
share
Run Code Online (Sandbox Code Playgroud) 我正在尝试获取从超类继承的PHP类的绝对路径名.看起来应该很简单.我认为下面的代码尽可能简洁地解释了它:
// myapp/classes/foo/bar/AbstractFoo.php
class AbstractFoo {
public function getAbsolutePathname() {
// this always returns the pathname of AbstractFoo.php
return __FILE__;
}
}
// myapp/classes/Foo.php
class Foo extends AbstractFoo {
public function test() {
// this returns the pathname of AbstractFoo.php, when what I
// want is the pathname of Foo.php - WITHOUT having to override
// getAbsolutePathname()
return $this->getAbsolutePathname();
}
}
Run Code Online (Sandbox Code Playgroud)
我不想覆盖的原因getAbsolutePathname()是会有很多类扩展AbstractFoo,在文件系统的许多不同的地方(Foo实际上是一个模块),它似乎违反了DRY.
我在我的主目录的两个文件.phpsh,并.php_history使用他们的名字我想测试路径名的扩展以及它如何影响在bash关联数组.我遇到的结果似乎很奇怪,我无法解释它们.我在这里尝试了很多变化.
>my_array_filename_var=(".phpsh"=10 ".php_history" =20)
>echo ${my_array_filename_var[.phpsh]}
ERROR
>echo "${my_array_filename_var[.phpsh]}"
ERROR
# This one below understandably doesn't work. But I was pulling my hair out.
>echo "${my_array_filename_var[".phpsh"]}"
ERROR
echo "${my_array_filename_var[\".phpsh\"]}"
ERROR
>echo "${my_array_filename_var[.phpsh]}"
ERROR
>echo "${my_array_filename_var[phpsh]}"
.phpsh=10
>echo "${my_array_filename_var[php_history]}"
.phpsh=10
>echo "${my_array_filename_var[\.php_history]}"
ERROR
Run Code Online (Sandbox Code Playgroud)
当ERROR令牌代表
bash: .phpsh: syntax error: operand expected (error token is ".phpsh")
Run Code Online (Sandbox Code Playgroud)
是否有一些规则说我的关键数组的键中没有点字符?bash中的路径名扩展如何发挥作用?
我正在努力与Bash变量扩展.请参阅以下代码:
~/tmp 689$ a=~/Library/Application\ *; echo $a
/Users/foo/Library/Application *
~/tmp 690$ echo ~/Library/Application\ *
/Users/foo/Library/Application Scripts /Users/foo/Library/Application Support
Run Code Online (Sandbox Code Playgroud)
由于扩展的顺序是brace-> tilde-> parameter - > ....-> pathname,为什么路径名扩展不应用于$a第二个命令中的相同方式?
[添加]
空格逃逸是否隐藏了以下输出的行为?
~/tmp 705$ a=~/Library/Application*; echo $a
/Users/foo/Library/Application Scripts /Users/foo/Library/Application Support
Run Code Online (Sandbox Code Playgroud) 如何获取资源文件夹中drawable的路径名?我试图在我的资源文件夹中获取图像并将其传递给函数进行解码.
路径"android.resource://com.myapp.example/"+ R.drawable.image"没有用.
Bitmap bitmap;
File image = new File("android.resource://com.myapp.example/"+ R.drawable.image);
bitmap.decodeFile(image);
public Bitmap decodeFile(File f) {
try {
// decode image size
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeStream(new FileInputStream(f), null, o);
// Find the correct scale value. It should be the power of 2.
final int REQUIRED_SIZE = 70;
int width_tmp = o.outWidth, height_tmp = o.outHeight;
int scale = 1;
while (true) {
if (width_tmp / 2 < REQUIRED_SIZE
|| height_tmp / 2 < REQUIRED_SIZE)
break; …Run Code Online (Sandbox Code Playgroud) 我是 PS 新手,我正在尝试编写一个从全局变量接收参数的函数。我想将从 .txt 文件读取的路径名传递到同一脚本中的函数中。
function GetCorrectChildren ([string] $homepath,$min,$max,$row)
{
#Testpoint 2
write-host "homepath = $homepath"
$ColItem = (Get-ChildItem $homepath |? {$_.PSIsContainer} | sort-object)
}
foreach ($homepath in (Get-Content $PSScriptRoot\homepath_short.txt))
{
$freeSpace = [win32api]::GetDiskFreeSpace("$homepath").FreeBytesAvailable / 1073741824
$totalSpace = [win32api]::GetDiskFreeSpace("$homepath").TotalNumberOfBytes / 1073741824
$percentageFreeSpace = $freeSpace / $totalSpace * 100
if($freeSpace -lt $threshold)
{
#Testpoint 1
write-host "homepath = $homepath"
GetCorrectChildren ("$homepath",$min,$max,$OriRow)
}
Run Code Online (Sandbox Code Playgroud)
对于#Testpoint 1,它正确返回路径名,即\\C:\test1\test_a。然而其中#Testpoint 2却又回归\\C:\test1\test_a 20 30 System.Object。
我不明白这是什么20 30 System.Object意思以及它来自哪里?有人可以解释一下吗?谢谢