• 输入和输出

写在前面的:Java中的输入和输出还是比较重要的,之前我都没想整理IO和多线程的,但是在研究后面的好多东西时候,经常要读取资源文件,这个时候就不得不回过头来整理IO了。要玩熟Java的输入和输入,就必须先玩熟一个类:File。然后在就是Java.io包下的类和接口了。Java的IO主要包括了输入和输出2种流,每种输入和输出又分为字节流和字符流。值得注意和研究的是Java的IO流使用了一种装饰器设计模式,它将IO流分成底层节点流和上层处理流。除此之外,还要研究2个东西:1,Java对象的序列化机制;2,全新API,Java的nio。

  • File类

File类是Java.io包下代表与平台无关的文件和目录,注意:不管是文件还是目录都可以使用File类操作,但是File类不能访问文件内容本身。如果需要访问文件内容本身,就要使用输入和输出流。具体的方法在这里就不列出了,用到的时候查JDK就好了。值得注意的一点是:他有一个静态属性separator。这个属性表示与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。因为windows的路径分隔符使用反斜线(\),而Java程序中的反斜线表示转义字符,所以如果需要在windows中路径下包括反斜线,应该用2条反斜线,比如:C:\\java\\LinkinPark.txt,或者直接使用斜线也可以,Java支持将斜线当成与平台无关的路径分隔符。

具体的演示代码如下:

import java.io.File;

public class Linkin
{ public static void main(String[] args) throws Exception
{ // 以当前路径来创建一个File对象
File file = new File(".");
// 直接获取文件名,输出一点
System.out.println(file.getName());
// 获取相对路径的父路径可能出错,下面代码输出null
System.out.println(file.getParent());
// 获取绝对路径
System.out.println(file.getAbsoluteFile());
// 获取上一级路径
System.out.println(file.getAbsoluteFile().getParent());
// 在当前路径下创建一个临时文件
File tmpFile = File.createTempFile("aaa", ".txt", file);
// 指定当JVM退出时删除该文件
tmpFile.deleteOnExit();
// 以系统当前时间作为新文件名来创建新文件
File newFile = new File(System.currentTimeMillis() + "");
System.out.println("newFile对象是否存在:" + newFile.exists());
// 以指定newFile对象来创建一个文件
newFile.createNewFile();
// 以newFile对象来创建一个目录,因为newFile已经存在,
// 所以下面方法返回false,即无法创建该目录
newFile.mkdir();
// 使用list()方法来列出当前路径下的所有文件和路径
String[] fileList = file.list();
System.out.println("====当前路径下所有文件和路径如下====");
for (String fileName : fileList)
{
System.out.println(fileName);
}
// listRoots()静态方法列出所有的磁盘根路径。
File[] roots = File.listRoots();
System.out.println("====系统所有根路径如下====");
for (File root : roots)
{
System.out.println(root);
}
} }

  • 文件过滤器

File类有2个重载的list方法,返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。其中一个可以接受FilenameFilter参数,用来过滤文件。FilenameFilter接口只有accept一个方法,用来测试指定文件是否应该包含在某一文件列表中。



以下代码列出了当前路径下所有*.java和文件夹。

import java.io.File;
import java.io.FilenameFilter; /**
*
* @version 1L
* @author LinkinPark
* @since 2014-12-30
* @motto 梦似烟花心似水,同学少年不言情
* @desc ^这里用到了典型的command设计模式。Java不支持传一段代码块进方法,所以这里使用accept来封装相关过滤的代码块。
*/
public class Linkin
{ public static void main(String[] args)
{
File file = new File(".");
String[] nameList = file.list(new MyFilenameFilter());
for (String name : nameList)
{
System.out.println(name);
}
}
} // 实现自己的FilenameFilter实现类
class MyFilenameFilter implements FilenameFilter
{
public boolean accept(File dir, String name)
{
// 如果文件名以.java结尾,或者文件对应一个路径,返回true
return name.endsWith(".java") || new File(name).isDirectory();
} }

输入和输出--File类的更多相关文章

  1. 第15章-输入/输出 --- File类

    (一) Java的IO通过java.io包下的类和接口来支持,在java.io包下主要包括输入.输出两种IO流. 每种输入.输出流又分为字节流和字符流两大类: (1)字节流以字节为单位来处理输入.输出 ...

  2. Java 输入/输出——File类

    File类是java.io包下代表与平台无关的文件和目录,也就是说,如果希望在程序中操作文件和目录,都可以通过File类来完成.值得指出的是,不管是文件还是目录都是使用File来操作的,File能新建 ...

  3. I/O(输入/输出)---File类

    File:表示文件与目录.用它来对文件或目录进行基本操作,它可以查出文件的基本相关信息,比如:名称.最后的修改日期.文件大小. 使用File类操作文件和目录属性步骤: 1.引入File类 import ...

  4. 输入和输出--RandomAccessFile类

    RandomAccessFile 类 RandomAccessFile 类既可以读取文件内容,也可以向文件输出数据. RandomAccessFile 类支持 "随机访问" 的方式 ...

  5. java基础——IO流之File类

    1.File类的构造方法: File(String  pathName):通过一个指定的字符串类型路径来创建一个文件对象 File  (String parent,String child):通过指定 ...

  6. IO编程之File类

    File类是java.io包下代表与平台无关的文件及目录,程序操作文件和目录都可以通过File类来完成.值得指出的是,不管是文件还是目录都可以通过File类来操作.File能新建.删除.重命名文件和目 ...

  7. Java输入输出流(IO)-----文件类File详解

       1.java.io.File类简介 凡是与输入.输出相关的类.接口等都定义在java.io包下 File是一个类,可以有构造器创建其对象.此对象对应着一个文件(.txt .avi .doc .p ...

  8. Java自学第10期——File类与IO流(输入输出流、处理流、转换流、缓冲流、Properties集合、打印流)

    1.IO简介 IO(输入输出)通过java.io包下的类和接口来支持,包下包括输入.输出两种IO流,每种输入输出流又可分为字符流和字节流两大类. 2.File类 File类是io包下与平台无关的文件和 ...

  9. JAVA实现File类中的遍历操作并输出内容

    package shb.java.testIo; import java.io.BufferedReader; import java.io.BufferedWriter; import java.i ...

随机推荐

  1. Java学习笔记23(Calendar类)

    Calendar意味日历,对Date类中的很多方法做了改进 Calendar类是一个抽象类,不可以见对象,需要子类完成实现 不过这个类有特殊之处,不需要创建子类对象,而是使用它的静态方法直接获取: 示 ...

  2. python 打印几行空行、 打印不换行

    2.x版本中使用print '\n' * n #n为行数 3.x版本中使用print('\n' * n) #n为行数 print 'Hello',  :不会换行.[加上逗号(,)]

  3. ADO对SQL Server 2008数据库的基础操作

    最近在学习ADO与数据库的相关知识,现在我将自己学到的东西整理写出来,也算是对学习的一种复习. 这篇文章主要说明如何遍历某台机器上所有的数据库服务,遍历某个服务中所有的数据库,遍历数据库中的所有表以及 ...

  4. ubuntu使用rdesktop连接win10的两个问题

    关闭防火墙,解决主机ping不通虚拟机的问题 win10需要修改注册表 \HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStatio ...

  5. js 跨域问题 汇总

    前言 相信每一个前端er对于跨域这两个字都不会陌生,在实际项目中应用也是比较多的.但跨域方法的多种多样实在让人目不暇接.老规矩,碰到这种情况,就只能自己总结一篇博客,作为记录. 正文 1. 什么是跨域 ...

  6. k-vim常见快捷键

    前段时间看到wklken分享的k-vim配置,试用了下真的爽到飞起. 不过唯一不爽的是有一些快捷键一直记不住,现在整理些常用的快捷键,以备查阅. F2 set nu/nonu,行号开关,用于鼠标复制代 ...

  7. HyperLedger Fabric Introduction——区块链超级账本介绍

    介绍 HyperLedger Fabric是一个基于模块化架构的分布式账本解决方案平台,它拥有深度加密.便捷扩展.部署灵活及可插拔等特性.它设计之初的目的是支持不同组件的可插拔实现,并适应整个经济生态 ...

  8. Linux各种版本

     1.1   Fedora Core和Fedora 一开始总搞不清楚 Fedora Core和Fedora有什么关系?有什么不同,现在终于明白了,自从Fedora Core 第七版开始以后就开始称作F ...

  9. MVVM 框架解析之双向绑定

    更好的阅读体验,点击 原文地址 MVVM 框架 近年来前端一个明显的开发趋势就是架构从传统的 MVC 模式向 MVVM 模式迁移.在传统的 MVC 下,当前前端和后端发生数据交互后会刷新整个页面,从而 ...

  10. Python模块之信号学习(signal)

    信号概述 在学习Python前应该学习下Linux下的信号,软中断信号(signal,又简称为信号)用来通知进程发生了异步事件.进程之间可以互相通过系统调用kill发送软中断信号.内核也可以因为内部事 ...