惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
有赞技术团队
有赞技术团队
罗磊的独立博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
U
Unit 42
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Recent Announcements
Recent Announcements
Y
Y Combinator Blog
Vercel News
Vercel News
Martin Fowler
Martin Fowler
V
V2EX
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
L
LangChain Blog
云风的 BLOG
云风的 BLOG
H
Hackread – Cybersecurity News, Data Breaches, AI and More
aimingoo的专栏
aimingoo的专栏
G
Google Developers Blog
The GitHub Blog
The GitHub Blog
N
Netflix TechBlog - Medium
Google DeepMind News
Google DeepMind News
雷峰网
雷峰网
阮一峰的网络日志
阮一峰的网络日志
F
Fortinet All Blogs

博客园 - Rock Wang

Asp.Net Core Web Api基于cookie的安全验证 C#语言新特性(6.0-8.0) C#中Struct和Class的区别 iOS真机调试之免费预配(Free provisioning) iOS真机调试 Spring Boot学习笔记(1) Java学习笔记(9) Java学习笔记(6) Java学习笔记(5) Java学习笔记(4) Idea常用功能汇总 Java学习笔记(3) Java学习笔记(2) Java学习笔记(1) 如何开发NPM包 c#抓屏功能在DPI缩放后,截到的图片不完整的问题 支持续传功能的ASP.NET WEB API文件下载服务 ASP.NET MVC 阻止通过Url直接访问服务器上的静态文件 VS2013/VS2015/VS2017通过oschina托管代码
Java学习笔记(7)
Rock Wang · 2019-03-18 · via 博客园 - Rock Wang

File类用于处理文件和目录

isDirectory()用于检查当前对象是否目录,isFile()用于检查当前对象是否文件

构造File对象时,传入的路径不一定要求存在,要通过exists()方法判断是否存在

使用Scanner类从文件中读取文本数据,使用PrintWriter类向文件中写入文本数据

如果文件不存在,PrintWriter将创建一个新的文件;如果文件已存在,文件中的原有内容将被擦除。print(),println(),printf()三个方法向文件中写数据,最后不要忘记调用close()方法关闭文件

另外还可以通过try-with-resources的语法,自动释放资源

try(java.io.PrintWriter writer=new java.io.PrintWriter(file)){
  //文件写入操作  
}

括号里声明的资源,在try代码块运行结束后,会自动释放,括号里可能同时声明多个资源。资源对象必须是AutoCloseable的子类。资源必须在一条语句中声明并创建完毕

使用Scanner读取文件,要调用下面这个构造函数

Scanner input = new Scanner(new File(fileName));

Scanner(string)用于直接从string变量中读取数据。

换行符在windows下是\r\n, 在UNIX系统下是\n, 可以通过如下语句获取当前系统的换行符

String lineSeparator = System.getProperty("line.separator");

判断是否已读到文件结尾处,用Scanner.hasNext();

通过传递Url给Scanner, 可以读取网络资源

 1         System.out.println("Enter a URL: ");
 2         String URLString = new Scanner(System.in).next();
 3 
 4         try {
 5             URL url = new URL(URLString);
 6             int count = 0;
 7             Scanner input = new Scanner(url.openStream());
 8             while (input.hasNext()) {
 9                 String line = input.nextLine();
10                 count += ((String) line).length();
11             }
12 
13             System.out.println("The file size is " + count + " characters");
14         } catch (MalformedURLException e) {
15             System.out.println("Invalid URL");
16         } catch (IOException e) {
17             System.out.println("I/O errors: no such file");
18         }

抽象方法只有定义,没有实现,需要在子类中实现;含有抽象方法的类,必须定义为抽象类;抽象类不能实例化。

子类要实现父类的所有抽象方法,否则子类也要定义成抽象类,抽象方法都是非静态方法

抽象类不能通过new操作进行实例化,但你仍然可以定义构造器,以在子类中被调用

含有抽象方法的类必须是抽象类,抽象类不一定要包含抽象方法

子类中可以重写父类中的方法,并把它定义为抽象方法(不常用)

即使父类是实在类(concrete),子类也可以定义成抽象(所有类的基类都是Object, Object是实在类)

虽然不能通过new创建抽象类的实例,但是抽象类可以作为一个类型使用