jdk7.NIO.2学习笔记之目录文件及权限
package com.zl.jdk7; import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths; public class PathTest1 {
public static void main(String[] args) {
Path listing = Paths.get("/home/c3t/1.js");
//得到文件名
System.out.println("File name :"+listing.getFileName());
//获得名称元素的数量,就是目录的数量
System.out.println("number of name elements :"+listing.getNameCount());
//获得父目录路径
System.out.println("parent path :"+listing.getParent());
//得到根目录
System.out.println("Root path :"+listing.getRoot());
//得到根目录(0)到期第二个元素(2)之间的子目录
System.out.println("Subpath from root :" + listing.subpath(0, 2)); try {
//.vimrc是一个软链接 得到链接的真实文件地址
Path realPath = Paths.get("/home/c3t/.vimrc").toRealPath();
System.out.println("real path:"+realPath.toString());
} catch (final Exception e) {
e.printStackTrace();
} //合并目录,合并后 /home/c3t/conf/application
Path prefix = Paths.get("/home/c3t/");
Path completePath = prefix.resolve("conf/application");
System.out.println("resolve:"+completePath.toString()); //获得两个路径之间的路径 结果得到 从 /usr目录到/home/c3t/waller的路径 relativeize:../home/c3t/waller
String logging ="/usr";
String configuation = "/home/c3t/waller";
Path logdir = Paths.get(logging);
Path confDir = Paths.get(configuation);
Path pathtoConfDir = logdir.relativize(confDir);
System.out.println("relativeize:"+pathtoConfDir.toString()); //NIO.2 PATH和java已有的file类转换
//java.io.File新增了 toPath方法可以把已有的File转化为Path
//Path有toFile可以把path转化为File File file = new File("/home/c3t/1.js");
Path lp = file.toPath();
System.out.println("file to Path:"+lp.toAbsolutePath().toString());
file = lp.toFile();
}
}
//创建文件
Path target = Paths.get("/home/c3t/jdk7.txt");
//设置文件权限 由于目录权限限制 结果可能是 rw-r--r--
Set<PosixFilePermission> perms= PosixFilePermissions.fromString("rw-rw-rw-");
FileAttribute<Set<PosixFilePermission>> attr = PosixFilePermissions.asFileAttribute(perms); //创建文件
try {
Files.createFile(target,attr);
} catch (IOException e) {
e.printStackTrace();
} //删除文件
try {
Files.delete(target);
} catch (IOException e) {
e.printStackTrace();
}
自定义权限的删除和添加
Path profile = Paths.get("/home/c3t/1.js");
try {
//获得属性视图
PosixFileAttributes attrs = Files.readAttributes(profile, PosixFileAttributes.class);
//得到权限集合
Set<PosixFilePermission> posixFilePermission = attrs.permissions();
//清除所有权限
posixFilePermission.clear();
//得到文件爱你所有者
String owner = attrs.owner().getName();
//得到权限的字符串形式
String perms = PosixFilePermissions.toString(posixFilePermission);
//加入自定义权限
posixFilePermission.add(PosixFilePermission.OWNER_READ);
posixFilePermission.add(PosixFilePermission.OWNER_WRITE);
posixFilePermission.add(PosixFilePermission.OTHERS_READ);
posixFilePermission.add(PosixFilePermission.OTHERS_WRITE);
//写入权限
Files.setPosixFilePermissions(profile,posixFilePermission);
} catch (IOException e) {
e.printStackTrace();
}
//读文件
@Test
public void test2() {
Path profile = Paths.get("/home/c3t/1.js");
try (BufferedReader reader = Files.newBufferedReader(profile, StandardCharsets.UTF_8)) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
//追加写文件
@Test
public void test3() {
Path profile = Paths.get("/home/c3t/1.js");
try (BufferedWriter writer = Files.newBufferedWriter(profile, StandardCharsets.UTF_8, StandardOpenOption.APPEND)) {
writer.newLine();
writer.write("i am ok");
} catch (IOException e) {
e.printStackTrace();
}
}
jdk7.NIO.2学习笔记之目录文件及权限的更多相关文章
- Windows phone 8 学习笔记(2) 数据文件操作
原文:Windows phone 8 学习笔记(2) 数据文件操作 Windows phone 8 应用用于数据文件存储访问的位置仅仅限于安装文件夹.本地文件夹(独立存储空间).媒体库和SD卡四个地方 ...
- thinkphp学习笔记2—入口文件
原文:thinkphp学习笔记2-入口文件 在thinkphp中有两个入口文件,一个是项目的入口文件,是index.php在主目录里面,还有一个是thinkphp框架的的入口文件,放在框架目录下面如: ...
- thinkphp学习笔记1—目录结构和命名规则
原文:thinkphp学习笔记1-目录结构和命名规则 最近开始学习thinkphp,在下不才,很多的问题看不明白所以想拿出来,恕我大胆发在首页上,希望看到的人能为我答疑解惑,这样大家有个互动,学起来快 ...
- NIO模型学习笔记
NIO模型学习笔记 简介 Non-blocking I/O 或New I/O 自JDK1.4开始使用 应用场景:高并发网络服务器支持 概念理解 模型:对事物共性的抽象 编程模型:对编程共性的抽象 BI ...
- Java学习-042-获取目录文件列表(当前,级联)
以下三个场景,在我们日常的测试开发中经常遇到: 软件自动化测试,在进行参数测试时,我们通常将所有相似功能的参数文件统一放在一个目录中,在自动化程序启动的时候,获取资源参数文件夹中所有参数文件,然后解析 ...
- java之jvm学习笔记三(Class文件检验器)
java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...
- matlab学习笔记5--低级文件输入输出函数
一起来学matlab-matlab学习笔记5 低级文件输入输出函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等著 感谢张 ...
- [原创]java WEB学习笔记49:文件上传基础,基于表单的文件上传,使用fileuoload 组件
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- Windows phone 8 学习笔记(2) 数据文件操作(转)
Windows phone 8 应用用于数据文件存储访问的位置仅仅限于安装文件夹.本地文件夹(独立存储空间).媒体库和SD卡四个地方.本节主要讲解它们的用法以及相关限制性.另外包括本地数据库的使用方式 ...
随机推荐
- android studio中使用recyclerview小白篇(四)
经过努力,我们的recyclerview终于可以使用了,但是装配上真实的数据后,发现左边的内容太长了,如果超过一行,左边内容和右边的内容竟然重叠在一起了,好是让人心塞啊,如下图 后来发现设置左边tex ...
- .Net Core 项目引用本地类库方式(一)
最近了解到.NET Core 项目,引用本地类库DLL的方式有三种 1.非同解决方案下的引用,直接引用,浏览,找到对应的DLL,然后确定引用. 这种方式有个不好的地方就是,如果引用的DLL文件里面,也 ...
- 以太坊系列之十三: evm指令集
evm指令集手册 Opcodes 结果列为"-"表示没有运算结果(不会在栈上产生值),为"*"是特殊情况,其他都表示运算产生唯一值,并放在栈顶. mem[a.. ...
- VS vs2012制作安装包
VS vs2012制作安装包 一.参考地址: http://www.3fwork.com/b100/000196MYM014103/
- windows下安装newman
1.下载安装node.js,下载地址::https://nodejs.org/en/download/,这里我下载的为v10.15.0-x64.msi,下载后直接安装即可,安装完后可输入node -v ...
- javascript前端导出csv表格
使用场景 后台统计经常要展示各种各样的表格数据,几乎每个表格展示都会伴随着数据的导出. 之前的解决方案都是通过发起一个相同查询参数(querystring)的导出请求(action=export),由 ...
- Python3 + django2.0 + apache2 + ubuntu14部署网站上线
自己尝试在本地搭建了 Django 项目后,想部署到自己云服务器上,经常多次尝试和多次踩坑(捂脸),总结如下: 环境:ubuntu14, django2.0, apache2. 1.首先安装需要的库包 ...
- c语言和c++的相互调用
1.c与c++编译方式 (1)gcc和g++都可以编译.c文件,也都可以编译.cpp文件.g++和gcc是通过后缀名来辨别是c程序还是c++程序的(这一点与Linux辨别文件的方式不同,Linux是通 ...
- jQuery Validate验证框架详解(jquery.validate.min.js)
原博客 jQuery Validate验证框架详解 jQuery校验官网地址:https://jqueryvalidation.org/ 一.导入js库 <script type="t ...
- kotlin spring @value 注解
spring boot和kotlin里静态类使用@Value注解配置解决方案前言spring boot里默认是不能给静态属性使用@Value赋值的.所以这里使用中间变量过渡绑定. 方案//applic ...