Java文件I / O基础

Java 7引入了java.nio.file包,以提供对文件I / O的全面支持。 除了许多其他功能之外,该软件包还包括Files类(如果您已经使用此类,则可以在这里停止阅读)。
文件包含许多静态方法,可用于在处理文件时完成常见任务。 不幸的是,在我看来,仍然使用旧的(Java 7之前版本)处理文件的方式编写了许多更新的(Java 7+)代码。 这不一定是坏事,但是它会使事情变得比所需的更为复杂。 造成这种情况的可能原因可能是在Java 7发行之前写了许多文章和获得很高评价的Stackoverflow答案。


在本文的其余部分中,我将提供一些代码示例,这些示例说明如何使用Java 7或更高版本完成与文件相关的常见任务。

处理文件

// Create directories
// This will create the "bar" directory in "/foo"
// If "/foo" does not exist, it will be created first
Files.createDirectories(Paths.get("/foo/bar"));// Copy a file
// This copies the file "/foo/bar.txt" to "/foo/baz.txt"
Files.copy(Paths.get("/foo/bar.txt"), Paths.get("/foo/baz.txt"));// Move a file
// This moves the file "/foo/bar.txt" to "/foo/baz.txt"
Files.move(Paths.get("/foo/bar.txt"), Paths.get("/foo/baz.txt"));// Delete a file
Files.delete(Paths.get("/foo/bar.txt"));// Delete a file but do not fail if the file does not exist
Files.deleteIfExists(Paths.get("/foo/bar.txt"));// Check if a file exists
boolean exists = Files.exists(Paths.get("/foo/bar.txt"));

大多数文件方法采用一个或多个Path类型的参数。 路径实例代表文件或目录的路径,可以使用Paths.get()获得。 请注意,此处显示的大多数方法还具有一个附加的varargs参数,可用于传递其他选项。

例如:

Files.copy(Paths.get("/foo.txt"), Paths.get("/bar.txt"), StandardCopyOption.REPLACE_EXISTING);

遍历目录中的所有文件

Files.walkFileTree(Paths.get("/foo"), new SimpleFileVisitor<Path>() {@Overridepublic FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {System.out.println("file: " + file);return FileVisitResult.CONTINUE;}
});

在这里,/ foo目录中的每个文件都会调用visitFile()方法。 如果您也想跟踪目录,则可以覆盖SimpleFileVisitor的其他方法。

写入和读取文件

// Write lines to file
List<String> lines = Arrays.asList("first", "second", "third");
Files.write(Paths.get("/foo/bar.txt"), lines, Charset.forName("UTF-8"));// Read lines
List<String> lines = Files.readAllLines(Paths.get("/foo/bar.txt"), Charset.forName("UTF-8"));

所示方法适用于字符。 如果需要使用字节,可以使用类似的方法。

结论

如果您不了解java.nio.file.Files,则一定应该看看Javadoc方法摘要。 里面有很多有用的东西。

翻译自: https://www.javacodegeeks.com/2014/05/java-file-io-basics.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/363582.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2018-05-14 代码考古-Python3官方教程字典例程

知乎原链 Data Structures中的第一个例程:>>> tel {jack: 4098, sape: 4139} >>> tel[guido] 4127 >>> tel {sape: 4139, guido: 4127, jack: 4098} >>> tel[jack] 4098 >>> del tel[sape] >>> tel[irv] 4127 >&g…

中大计算机考研复试刷人太狠,中山大学考研复试被刷原因大盘点!

不知不觉已经进入4月了&#xff0c;距离分数线公布的时间也越来越近了。复试的重要程度一点也不亚于初试的。复试考察内容多&#xff0c;考察形式多样&#xff0c;往年也有高分落榜&#xff0c;低分逆袭的情况&#xff0c;不管你是何种情况&#xff0c;都要做好复试准备哦&…

Windows堆栈区别[转]

堆和栈的区别 (转贴) 非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥! 堆和栈的区别一、预备知识—程序的内存分配一个由c/C编译的程序占用的内存分为以下几个部分1、栈区&#xff08;stack&#xff09;— 由编译器自动分配释放 &#xff0c;存放函数的参数值&…

WebView内存泄露的解决方案

一、简介&#xff1a; 做Android开发的相信都对webview不会陌生&#xff0c;而且也对系统自带的webview本身存在的问题也是怨念很久了&#xff0c;一方面是本身对js的支持不是很好另外一方面就是经常被人诟病的内存泄露了&#xff0c;网上也有很多解析和方案但至少在我的项目中…

Tomcat启用HTTPS协议配置过程

Article1较为简洁&#xff0c;Article2较为详细&#xff0c;测试可行。 Article1 概念简介 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器&#xff0c;属于轻量级应用服务器&#xff0c;在中小型系统和并发访问用户不是很多的场合下被普遍使用&#xff0c;是开发和调试…

常见的Java神话

这些问题在任何面试中都可能太过提出而无法提出&#xff0c;因为它们可能会使候选人推迟。 不管怎样&#xff0c;他们可能会在您自己的时间练习。 误解1&#xff09;System.exit&#xff08;0&#xff09;阻止最终被调用 为什么这样的代码 System.setSecurityManager(new Sec…

萧山职称计算机考试培训,浙江萧山2017年职称计算机考试时间安排

【摘要】环球网校分享的浙江萧山2017年职称计算机考试时间安排届时网校会及时更新职称计算机考试报名入口&#xff0c;希望对大家报考职称计算机考试有帮助&#xff0c;更多资料敬请关注环球职称计算机考试频道&#xff0c;网校会及时更新考【摘要】环球网校分享的“浙江萧山20…

springboot配置idea 热部署

背景&#xff1a; 在开发中&#xff0c;当我们修改代码之后&#xff0c;每次都要重新启动&#xff0c;很是浪费时间&#xff0c;在springboot中就有一种热部署方式&#xff0c;可以实现想要修改不需要每次都重新启动&#xff0c;保存即可生效 用法&#xff1a; 一、maven 添加 …

PMP-PMBOK-培训(3)Introduction to Project Process Groups and Initiating a Project

Overview of project management processes The five process groups are:initiating,planning,executing,mornitoring and controlling,and closing. 转载于:https://www.cnblogs.com/xuxiaoguang/archive/2008/09/03/1282709.html

10分钟看懂Docker和K8S

作者&#xff1a;鲜枣课堂链接&#xff1a;https://www.jianshu.com/p/f1f94c6968f5 2010年&#xff0c;几个搞IT的年轻人&#xff0c;在美国旧金山成立了一家名叫“dotCloud”的公司。 这家公司主要提供基于PaaS的云计算技术服务。具体来说&#xff0c;是和LXC有关的容器技术。…

在Spring Boot中实现相关ID(用于SOA /微服务中的分布式跟踪)

上周参加了在Geecon上Sam Newman的微服务讨论后&#xff0c;我开始思考更多有关用于监视&#xff0c;报告和诊断的面向服务/微服务平台最可能的基本功能&#xff1a;相关ID。 关联ID允许在面向服务的复杂平台中进行分布式跟踪&#xff0c;在该平台中&#xff0c;对单个应用程序…

计算机专业论文关于天气预报的,关于天气预报论文范文写作 天气预报相关论文写作资料...

天气预报,本文是一篇关于天气预报论文范文&#xff0c;可作为相关选题参考,和写作参考文献。天气预报论文参考文献&#xff1a;每天吃过晚饭,严惠语都会准时打开电视,收看黑龙江电视台和云南电视台的天气预报节目.自从女儿考上云南大学,为了能攒够女儿下学期的费用,老公背起行李…

OkHttp自定义重试次数

本文主要应用了OkHttp的Interceptor来实现自定义重试次数 虽然OkHttp自带retryOnConnectionFailure(true)方法可以实现重试&#xff0c;但是不支持自定义重试次数&#xff0c;所以有时并不能满足我们的需求。 #1.自定义重试拦截器&#xff1a; /*** 重试拦截器*/ public clas…

Ruby的库路径

irb下打入p $即显示出来 如: irb(main):003:0* p $: ["c:/ruby/lib/ruby/site_ruby/1.8", "c:/ruby/lib/ruby/site_ruby/1.8/i386-msvcrt", "c:/ruby/lib/ruby/site_ruby", "c:/ruby/lib/ruby/1.8", "c:/ruby/lib/ruby/1.8/i38 …

【快报】基于K2 BPM的新一代协同办公门户实践交流会

2014年2月28日&#xff0c;“基于BPM的新一代协同办公门户”用户实践交流活动在深圳金茂JW万豪酒店3楼Meet Room IV举办。本次会议由K2携手微软共同举办&#xff0c;邀请到的参会企业都是K2 的BPM老客户或对BPM新一代协同办公门户非常感兴趣的新朋友&#xff0c;他们有&#xf…

80个让你笑爆肚皮的程序员段子,不好笑算我输!

阅读本文大概需要 12 分钟。 1、折磨 对程序员的一般折磨&#xff1a;离奇的需求&#xff0c;对程序员的超级折磨&#xff1a;改三次需求~~~ 2、开发时间 项目经理说&#xff1a;给你三个人&#xff0c;多久可以完成&#xff1f;程序员&#xff1a;3个月&#xff01;那五个人呢…

Spring Integration Java DSL示例–使用Jms名称空间工厂进一步简化

在较早的博客文章中&#xff0c;我谈到了虚拟卢布戈德堡流程&#xff0c;该流程通过一系列复杂的步骤将字符串变成大写&#xff0c;本文的前提是引入Spring Integration Java DSL&#xff0c;作为通过xml配置文件定义集成流程的替代方法。 感谢Artem Bilan &#xff0c;在写完…

冯诺依曼计算机结构教案,冯诺依曼结构的计算机-同济大学精品课程.PPT

冯诺依曼结构的计算机-同济大学精品课程* 第一章 概 述 同济大学软件学院 课程的内容&#xff1a; 1&#xff0e;介绍单计算机系统的硬件组成 (内部结构、工作机制) 2&#xff0e;计算机自动工作的原理 3&#xff0e;在对工作原理了解的基础上&#xff0c;讲述有关计算机设 计的…

非安装版的PostgreSQL8.3.3的首次使用经历

第一次用Postgre&#xff0c;已经是好多年以前了&#xff0c;隐约记得是在linux下边&#xff0c;build半天&#xff0c;然后手动配置库文件之类。 今天在整理资料的时候发现&#xff0c;Postgre出现了解压缩直接使用的版本&#xff0c;上边注明了for expert only. 呵呵&#xf…

腾讯TBS X5 WebView的简单使用

工作中经常涉及H5网页的加载工作&#xff0c;最多使用的就是安卓系统控件WebView&#xff0c;但是当网页内容比较多的时候&#xff0c;需要等待很久才能加载完&#xff0c;加载完后用户才能看到网页中的内容&#xff0c;这样用户需要等很久&#xff0c;体验很差。 那能不能边加…