如何使用 Erlang file:read_file_info 权限/模式信息?

2023-12-30

Erlang 文档为file:read_file_info/1声明“文件权限是总和”和“其他位......可以设置”,而不是灌输信心。而且,谷歌一直不是我的朋友。

我希望采用返回的模式file:read_file_info/1, e.g. 33188,在 Linux 机器上并将其转换为更易于人类阅读和/或识别的内容,例如rw-r--r-- or 644.

非常感谢任何提示、链接或指示。


简短的方法:

io_lib:format("~.8B", [Mode]).

... or:

io_lib:format("~.8B", [Mode band 8#777]).

For Mode = 33204这两个将分别给你:["100664"] and ["664"].

漫长的路:

print(Mode) ->
    print(Mode band 8#777, []).

print(0, Acc) when length(Acc) =:= 9 ->
    Acc;
print(N, Acc) ->
    Char = perm(N band 1, length(Acc) rem 3),
    print(N bsr 1, [Char | Acc]).

perm(0, _) ->
    $-;
perm(1, 0) ->
    $x;
perm(1, 1) ->
    $w;
perm(1, 2) ->
    $r.

这个(函数print/1) for Mode = 33204会给你这个结果:"rw-rw-r--".


如果有人不清楚,我将尝试解释我提供的片段背后的基本内容。

正如@macintux 已经提到的,33204实际上是八进制数 100664 的十进制表示。这三个最低的八进制数字(664) 可能有你需要的,所以我们通过按位和 (band) 与三个八进制数字中的最高数字进行运算 (8#777)。这就是为什么short way如此短——你只需告诉erlang进行转换Mode字符串就像八进制数一样。

您提到的第二种表示形式(例如rw-rw-r--, 一些东西ls吐出)很容易从二进制表示中重现Mode数字。请注意,三个八进制数字将为您提供正好九个二进制数字(8#644 = 2#110110100)。事实上这是字符串rwxrwxrwx其中每个元素替换为-如果对应的数字等于0。如果数字是1该元素保持不变。

所以有一个稍微干净的方法来实现这一点:

print(Mode) ->
    print(Mode band 8#777, lists:reverse("rwxrwxrwx"), []).

print(0, [], Acc) ->
    Acc;
print(N, [Char0 | Rest], Acc) ->
    Char = char(N band 1, Char0),
    print(N bsr 1, Rest, [Char | Acc]).

char(0, _) ->
    $-;
char(1, C) ->
    C.

我希望你明白了。无论如何,如果您有疑问,请随时在评论中提出任何问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Erlang file:read_file_info 权限/模式信息? 的相关文章

  • CSRF 失败:来源检查失败 - http://localhost:8000/ 与任何可信来源不匹配

    请帮我解决问题 我正在构建一个由 Django Rest Framework 和 ReactJS 组成的应用程序 我使用了视图集 my error 响应数据 detail CSRF Failed Origin checking failed
  • iPhone - 从网络服务器获取文件的上次修改日期

    我想检查网络服务器上文件的上次修改日期 任何帮助都会很棒 谢谢 NSURLRequest request NSURLRequest alloc initWithURL aURL NSHTTPURLResponse response NSUR
  • 如何使用C从http下载文件?

    最近几天我试图弄清楚如何从 URL 下载文件 这是我对套接字的第一个挑战 我用它来了解协议 所以我想在没有 cURL 库的情况下只用 C 语言来完成它 我搜索了很多 现在我可以打印页面的源代码 但我认为这与文件不同 我不必只将接收到的数据从
  • Erlang 进程如何(如果有的话)映射到内核线程?

    Erlang 因能够支持许多轻量级进程而闻名 它之所以能做到这一点 是因为它们不是传统意义上的进程 甚至不是 P 线程中的线程 而是完全在用户空间中的线程 这很好 实际上很棒 那么 Erlang 线程如何在多核 多处理器环境中并行执行呢 当
  • 使用 Visual Studio 复制文件?

    我想创建一个 Visual Studio 我正在使用 VSTS 2008 项目 它只执行文件复制工作 更详细地说 我将向该项目添加一些文件 并将该项目复制文件 包含在该项目中 到某个目标位置我构建该项目 有什么想法如何在 VSTS 中做到这
  • Java中独立于文件系统的文件和路径?

    我正在使用 Java 8 编写一个与文件系统交互的应用程序 为了使测试更容易 我注入了FileSystem到我的方法中 可以将其换出进行测试 我目前正在使用jimfs在我的单元测试和DefaultFileSystem getFileSyst
  • 在 Google Cloud 中创建 OAuth 凭据的权限

    使用 IAM 我尝试允许某些用户访问 API 并允许他们创建 OAuth 客户端凭据 是否有允许这样做的预定义角色 我不想使用项目编辑器的角色 因为我试图仅允许访问必要的服务 当用户在其项目中时 他们转到 API 和服务 gt 凭据 用户会
  • 在 MATLAB 中重命名文件

    我正在尝试以编程方式重命名工作目录中的文件a temp txt to b hello txt 您建议如何这样做 MATLAB中有一个简单的文件重命名函数吗 我认为您正在寻找 MOVEFILE
  • 在批处理文件中添加 +1 到日期

    我有一个批处理文件 可以很好地创建今天的日期 现在我需要更新它以显示明天的日期 任何帮助深表感谢 echo off set TimeStamp 12 00 00 FOR F TOKENS 1 DELIMS A IN DATE T DO SE
  • 如何在play框架中从服务器读取文件

    我有以下文件 app menus menu1 yml 我想阅读它的内容 简短回答 fileContent play vfs VirtualFile fromRelativePath app menus menu1 yml contentAs
  • 为什么符号链接的权限默认为所有许可?

    当我使用创建硬链接时ln ln testfile txt testfile2 txt 文件硬链接 通过 inode 表中两个别名的相同 inode 编号进行确认ls li 对硬链接文件具有与原始名称文件相同的初始权限 1222285 rw
  • Android:永久保存文件(即使在清除数据/卸载后)

    我想知道是否有一种方法可以永久存储少量数据 永久我的意思是即使用户清除应用程序数据 卸载应用程序 我也希望数据保留下来 我知道当用户清除应用程序数据 卸载应用程序时 共享首选项和数据库将被删除 我也知道我可以在 SD 卡上保存内容 但是如果
  • 系统找不到java中指定的文件

    我正在制作一个打开和读取文件的程序 这是我的代码 import java io public class FileRead public static void main String args try File file new File
  • 使用 TcpClient 通过 C# 通过 TCP 发送多个文件

    我正在尝试使用 C TcpClient 通过 TCP 发送多个文件 对于单个文件来说它效果很好 但是当我有多个文件时 它只发送第一个文件 这是我的代码 发送文件 try TcpClient tcpClient new TcpClient N
  • C - sscanf 不忽略空格

    我正在读取文本文件并使用逗号作为分隔符 下面的行确实有效 但是当我打印出 lname 时 它 不会忽略逗号后面的空格并在名称之前打印空格 如何调整代码以忽略空格 文本示例 罗布 史密斯 4 12 岁 某某史蒂夫 琼斯 41 286 某个文本
  • .bat 文件将文件排序到文件夹中

    对于我的图片集 我希望文件夹中的所有图片按日期自动分类到文件夹中 幸运的是 这些文件已经以时间戳命名 2012 07 15 12 21 06 jpg 2012 07 15 12 21 26 jpg 2012 07 16 12 12 50 j
  • 获取ERLANG中的最长公共子序列

    我是这个 ERLANG 的新手 我了解基础知识 这就像计划 但范围更广 我知道如何创建一个函数 但在创建一个获取最长公共子序列的函数时遇到问题 lcs str1 str2 是一个接受两个字符串并输出一个整数的函数 lcs algorithm
  • 是否可以使用 Java 在文件上设置自定义元数据?

    是否可以在 File 实例上获取和设置自定义元数据 我想将通过系统处理的文件用作某种非常简单的数据库 其中每个文件都应包含其他自定义元数据 例如发件人的电子邮件 一些时间戳等 它是针对内部系统的 因此安全性不是问题 在 java 7 中你可
  • 打开/尝试读取文件[重复]

    这个问题在这里已经有答案了 我尝试简单地读取文本文件的内容并将其存储到数组中 但是 ins open file txt r array for line in ins array append line ins close 它给了我一个 打
  • 在文件复制/上传未完成时读取文件内容

    例如 每 5 秒 服务器检查文件是否已添加到特定目录 如果是 它会读取并处理它们 相关文件可能非常大 例如 100 Mo 因此将它们复制 上传到上述目录可能会很长 如果服务器尝试访问尚未完成复制 上传的文件怎么办 JAVA是如何管理这些并发

随机推荐

  • arraylist 与数组中基本类型的包装

    在 Core java 1 中我读过 注意 ArrayList 很远 比 int 数组效率低 因为每个值都是单独的 包裹在物体内部 你会 只想将此构造用于 程序员时的小收藏 方便比方便更重要 效率 但在我的软件中 由于某些要求 我已经使用了
  • PHP 中变量名前的“At”符号:@$_POST

    我见过函数调用前面有一个 at 符号来关闭警告 今天我浏览了一些代码 发现了这一点 hn POST hn 放在这里有什么好处呢 The 是PHP中的错误抑制运算符 PHP支持一个错误控制 操作员 AT标志 什么时候 备用到php中的表达 可
  • Eclipse 调试:保持在当前项目的范围内

    在 Eclipse 中进行单步调试时 是否可以指示调试器仅遍历项目源中的步骤 我正在调试 Rails 应用程序 大部分调用都通过 Rails 的基础设施 例如 activerecord 进行传输 我对此不感兴趣 我希望步进调试器跳过这些文件
  • 如何让 Ansible 仅在一台主机上运行一项特定任务?

    该剧本如下所示 hosts all tasks name run on all hosts 1 shell something1 name run on all hosts 2 shell something2 name run on on
  • 设置 Sinatra 在子目录中运行

    现在我对 Sinatra Ruby Apache 还很陌生 但继承了一个 Sinatra 应用程序来部署 目前 Apache 设置为从文档根 httpdocs 运行 我需要在文件夹子目录下运行 ruby 应用程序 例如 httpdocs w
  • 如何使本地的mySQL数据库可以从不同的机器访问?

    我在 Windows 系统上安装了 mySQL 并使用 mySQL 查询浏览器进行连接 我正在提供培训 我希望人们能够连接到我的机器 SQL 数据库 我怎么做 目前它不允许连接 我需要修改哪些设置 第 1 步 检查 IP 连接 默认情况下
  • 如何将 python Reportlab 表定位在位置 10,100 并使用drawString

    我是一个Python爱好者和reportlab新手 我知道如何使用drawString将文本放置在页面上的特定位置 例如 c drawString 10 100 欢迎来到Reportlab 但我不知道如何放置一个表格 只有几行长 以便该表格
  • 当值可以是对象或空数组时反序列化 JSON

    我正在使用 VK API 有时服务器可以返回空数组而不是对象 例如 personal when it is empty or personal religion smoking 1 alcohol 4 when not empty 我正在使
  • 如何在 Swift 中的 UI 选项卡栏上应用渐变?

    我通过故事板构建了选项卡栏 并自定义颜色 我在应用程序委托中更改它 使用UITabBar appearance barTintColor Color 我有一个梯度方法是这样的 func setGradientBackground color
  • Gerrit - Gitlab 集成

    为了改进开发流程 我们组织决定在开发工作流程中引入 Gerrit 我是负责实施 Gerrit 服务器的人 互联网上提供的用户指南对于将 Gerrit 实施到我们现有的工作流程非常有帮助 我们使用 Jenkins 和 Sonar 作为非交互式
  • 具有客户端证书身份验证的.Net Core Web API

    我在 Net Core 2 1中开发了一个简单的WEB API服务 我正在尝试实现客户端证书身份验证 因此我只能向在其计算机上安装了特定证书的客户端授予对 API 的访问权限 客户端使用浏览器 Chrome Edge IE11 或 Fire
  • 从n中选择k

    我想选择k元素均匀地随机地从可能的n无需两次选择相同的数字 对此有两种简单的方法 列出所有内容n的可能性 随机播放它们 你不需要 洗牌所有n数字只是k其中通过执行第一个k费希尔 耶茨 Fisher Yates 的脚步 选择第一个k 这种方法
  • Mockito java.lang.Exception:当我在测试中使用内部类时,类应该是公共的

    我有以下测试 RunWith Enclosed class public class ProductTest RunWith MockitoJUnitRunner class Ignore public static abstract cl
  • 避免代码重复的最佳方法是定义比较运算符“<、<=、>、>=、==、!=”,但要考虑 NaN?

    我数学 x lt y相当于 x gt y 对于浮点运算来说也是如此 在多数情况下 但不总是 什么时候x or y是 NaN x lt y is not相当于 x gt y 因为比较NaN任何事物总会有回报false 但仍然 x lt y l
  • 动态修补(处理创建时传递的变量)有哪些替代方案?

    我听说有人将动态修补描述为一种黑客行为 或者在 Pd 的未来版本中存在破坏的风险 这是足够合理的 但这似乎意味着在构建抽象时还有其他选择 动态修补似乎对于实例化可变数量的对象和连接到可变数量的入口和出口 在创建时定义的数字 我个人不需要在事
  • 在自定义 Cocoapods 中使用故事板和图像资源

    我正在尝试使用 cocoa pod 模块化一个大型 iOS 项目 正在 Swift 中开发 这个想法是创建 子应用程序 其中包含可以集成到主项目中的故事板和资产 在这种情况下 我在使用故事板时遇到了麻烦 这个问题类似于 我认为 https
  • Mojarra Java EE 5/6 兼容性

    非常简单的问题 是否有人有关于 Mojarra JSF RI 与 Java EE 5 和 6 标准兼容性的 官方 信息的链接 我似乎找不到任何与此有关的信息 我们被 Java EE 5 应用程序服务器困住了 我们想知道可以使用哪个版本的 M
  • 从 Python 中使用 jar 运行 Java 程序

    我正在尝试使用 Python 中的 jar 运行 java 文件 我首先运行命令 java classpath Users blablalba jackson all 1 9 0 jar parseJason 它工作得很好 然后我编写了一个
  • 当我更改一行的值时,连续形式的 MS Access 组合框会更改所有行的值

    过去两个小时我一直在尝试解决这个问题 但没有成功 所以我希望你能帮助我解决这个问题 我有一个连续的表单 一次显示多行 我在表单中添加了一个组合框 显示一些可以从另一个表中选择的值 同时显示同一个表中的默认值 问题是 一旦我更改表单中一个组合
  • 如何使用 Erlang file:read_file_info 权限/模式信息?

    Erlang 文档为file read file info 1声明 文件权限是总和 和 其他位 可以设置 而不是灌输信心 而且 谷歌一直不是我的朋友 我希望采用返回的模式file read file info 1 e g 33188 在 L