- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我目前正在做一个类似于 FTP 的实现的项目。为此,我需要实现虚拟 chrooting,它应该也适用于 Windows 平台。
我目前的做法是,每个用户都有一个特定的主目录(由 File
对象表示),每次用户尝试访问文件或目录时,服务器都会检查该文件是否存在或目录是否在此主目录内。
遗憾的是,我不确定如何以不占用太多 CPU 时间和 HDD 访问时间的方式执行此检查。人们可以简单地尝试遍历目录,如果我们到达一个等于给定主目录的目录,我们就会感到满意。如果我们到达根目录,我们返回 false
,因为给定的文件很可能不在主目录中。
我确信这个检查会起作用,但我也认为这会非常昂贵,并且在多用户环境中可能非常低效。
如果能帮助我更好地设计此算法,我将不胜感激。也许甚至存在一种方法?不过我还没有找到。
提前致谢!
//编辑:根据要求,这里是这个文件结构的一些例子
- /
- home/
- user1/
- file1.txt
- file2.txt
- user2/
- picture.png
- someDir/
我们假设有 2 个用户(“user1”和“user2”),用户 1 的主目录为“/home/user1”,用户 2 的主目录为“/home/user2”。
如果应用于此场景,我正在寻找的方法应该会给出以下结果:
isInsideHome("/home/user2/picture.png", "user1") -> false
isInsideHome("/home/user1/file1.txt", "user1") -> true
isInsideHome("/", "user1") -> false
isInsideHome("/home", "user2") -> false
我希望这些例子能阐明我在寻找什么。
最佳答案
假设您没有调用 createNewFile()、exists() 等方法,java.io.File 不需要 HDD 访问,并且只需要最少的 CPU。
例如我的电脑上不存在以下路径,但代码执行无异常
public static void main(String[] args) {
System.out.println(isInsideHome("/home/user2/picture.png", "user1"));
System.out.println(isInsideHome("/home/user1/file1.txt", "user1"));
System.out.println(isInsideHome("/", "user1"));
System.out.println(isInsideHome("/home", "user2"));
}
private static boolean isInsideHome(String pathStr, String leaf) {
File path = new File(pathStr);
File search = new File(leaf);
while ((path = path.getParentFile()) != null) {
if (search.getName().equals(path.getName())) {
return true;
}
}
return false;
}
java.io.File.getParentFile() 的源代码显示不涉及 HDD 访问...
public static void main(String[] args) {
System.out.println(isInsideHome("/home/user2/picture.png", "user1"));
System.out.println(isInsideHome("/home/user1/file1.txt", "user1"));
System.out.println(isInsideHome("/", "user1"));
System.out.println(isInsideHome("/home", "user2"));
}
private static boolean isInsideHome(String pathStr, String leafStr) {
File path = new File(pathStr);
File leaf = new File(leafStr);
while ((path = path.getParentFile()) != null) {
if (leaf.getName().equals(path.getName())) {
return true;
}
}
return false;
}
关于java - 如何确定一个目录是在文件系统层次结构中的另一个目录之下还是之上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28886162/
我希望根据 [, ] 分割字符串。但有一个限制,如果 [, ] 出现在 ""内,我们应该忽略它们。 示例: 对于字符串: """hello "hi" [abc: "pqr[abc]"] bye | [
在这里你可以看到,状态栏在黑色背景之上。如何将状态栏放在它下面?就像您看到的导航栏一样。 我需要这样的东西: 最佳答案 如果您创建新窗口并将该 View 添加到其中,这是可能的。在您的 ViewCon
我快要完成我网站的编码了。我在所有 div 和部分下制作了页脚。我使用了一个新部分, . 但页脚不在内容下方。为什么?它粘在顶部。 http://generationx-pk.net/tools/in
我使用 root.plist 自定义了我的应用程序设置(在 iPhone 设置页面中)。现在,我该如何将位置服务和通知添加到我的设置中,以便用户可以在一个地方看到我所有的应用偏好设置? 我需要这样的东
我正在尝试在栏中制作一个下拉列表,但无论我做什么,下拉列表都不会出现在父级下方。这是我的 CSS 代码: ul{ list-style:none; padding:0; margin-l
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预
我正在尝试将表单放在我有图像的 div 上:Form on the image 问题是我无法将表单 float 到右侧,而且表单位于其他 div 下方,就像我在此处附加的图像一样: Form unde
我正在尝试创建两个像两行一样的 div;一个在另一个之上,跨越屏幕的宽度。每行包含一个图像和一个标题。 Mybe 一个片段而不是一个 fiddle 会有所帮助。这是“好的”布局: html {
我的布局在同一行上有两个 div。我需要一个 div 向左浮动,另一个向右浮动,这样无论浏览器大小如何,div 都将保持在各自的一侧,并且当浏览器大小小于两个时,右侧的 div 不会低于左侧 floa
我想让一些内容显示在我的导航栏 下方。现在我的内容和我的导航栏放在彼此之上。我不确定要添加/更改哪个 CSS 属性来解决此问题。我相信我应该使用 display: block;。但是我不确定把它放在哪
我在使用 CSS 创建没有表格的 3 列时遇到问题。 3 我创建的 s 不在父级下 .出于某种原因,我必须使用内联样式。下面是代码:
我对位于另一个具有“position: absolute”的 div 下面的 div 有疑问。我需要让 footer 出现在 container div 下,但现在页脚出现在容器后面的某个地方。屏幕:
我正在做一个 web 应用程序,我需要为一些重大更改创建一个分支,问题是,这些更改需要更改数据库架构,所以我想将整个数据库也放在 git 下. 我该怎么做?是否有一个特定的文件夹可以保存在 git 存
我正在做一个 web 应用程序,我需要为一些重大更改创建一个分支,问题是,这些更改需要更改数据库架构,所以我想将整个数据库也放在 git 下. 我该怎么做?是否有一个特定的文件夹可以保存在 git 存
图片a ConstraintLayout其中包括三个垂直堆叠的项目: @+id/top @+id/middle1 or @+id/middle2 (one gets View.VISIBLE, one
这个问题已经有答案了: Most efficient method to groupby on an array of objects (61 个回答) 已关闭 4 年前。 我有以下对象结构: [{
我有一个包含一些文本的 div 和另一个我用照片列表和页脚 div 填充的。页脚 div 应该在照片 div 下面,但它却在照片下面。这是我的代码: div.gallery { margin: 5
我在处理分层 DIV 元素的顺序时遇到了问题。我有一个 DIV .lens-flare,它位于 HTML 层次结构的底部。然而,当我transform: translate 位置使其包含整个父 DIV
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我有一个 div,我想在其他主 div 的底部对齐 更新:这是实际代码: few more controls here
我是一名优秀的程序员,十分优秀!