输入和输出--File类

  • 输入和输出

写在前面的: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();
	}

}
时间: 2024-07-31 19:49:08

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

Java 输入/输出——File类

File类是java.io包下代表与平台无关的文件和目录,也就是说,如果希望在程序中操作文件和目录,都可以通过File类来完成.值得指出的是,不管是文件还是目录都是使用File来操作的,File能新建.删除.重命名文件和目录,File不能访问文件内容本身.如果需要访问文件内容本身,则需要使用输入/输出流. File类相关的方法参考链接:https://docs.oracle.com/javase/9/docs/api/overview-summary.html Field Summary Fie

C#中的输入和输出与类和对象

一.C#输入和输出 1.输入--使用Console.ReadLine();  ReadLine()方法的返回类型是string 1.1 从键盘中输入字符串格式的内容 string 变量名=Console.ReadLine(); 1.2 从键盘中输入数字格式的内容 int 变量名=   int.Parse(Console.ReadLine()); int 变量名=   Convert.ToInt32(Console.ReadLine()); 2.输出  Console.Write();//输出不换

输入和输出--RandomAccessFile类

RandomAccessFile 类 RandomAccessFile 类既可以读取文件内容,也可以向文件输出数据. RandomAccessFile 类支持 "随机访问" 的方式,程序可以直接跳到文件的任意地方来读写文件.所以说RandomAccessFile是IO流体系中功能最丰富的类.如果我们希望只访问文件的一部分内容,而不是把文件从头读到尾,使用这个类将是一个很好的选择.好多的多线程,断点的网络下载工具就是通过这个类来实现的,所有的下载工具在下载开始后都会建立2个文件:1个是与

Java输入输出流(NIO)-----文件类File详解

   1.java.io.File类简介 凡是与输入.输出相关的类.接口等都定义在java.io包下 File是一个类,可以有构造器创建其对象.此对象对应着一个文件(.txt .avi .doc .ppt .mp3 .jpg)或文件目录 File类对象是与平台无关的 File中的方法,仅涉及到如何创建.删除.重命名等等.只要涉及文件内容的,File是无能为力的,必须由io流来完成 File类的对象常作为io流的具体类的构造器的形参    2.createNewFile()  delete()  

File类和输入输出流体系基础

参考: https://www.jianshu.com/p/7e84ef94f0c1 李刚<Java疯狂讲义> File类 File类是java.io包下代表与平台无关的文件和目录,如果希望在程序中操作文件和目录,都可以通过File类来完成.不管是文件还是目录都是使用File来操作的,File能新建.删除.重命名文件和目录,但是File类不能访问文件内容本身,如果需要访问文件内容本身,则需要使用输入/输出流. 构造一个File类实例 File类的常见构造方法:new File(String p

用含成员函数的类来实现输入和输出时间

用含成员函数的类来实现输入和输出时间. 程序: #include<iostream> using namespace std; class Time { public: void set_time(); void show_time(); private: int hour; int minute; int sec; }; int main() { Time t1; t1.set_time(); t1.show_time(); Time t2; t2.set_time(); t2.show_t

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

package shb.java.testIo; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.Writer; import java.util.HashMap; /** * File类操作(此代码效率不是很高———>输出格式有欠缺.功能还是

黑马程序员——【Java基础】——File类、Properties集合、IO包中的其他类

---------- android培训.java培训.期待与您交流! ---------- 一.File类 (一)概述 1.File类:文件和目录路径名的抽象表现形式 2.作用: (1)用来将文件或文件夹封装成对象 (2)方便于对“文件”与“文件夹属性信息”进行操作 (3)File对象,可以作为参数传递给流的构造函数 (二)构造方法 * 通过File的构造函数创建File对象 方式1:File f = new File("c:\\a.txt"); 方式2:File f2 = newF

1.java.io包中定义了多个流类型来实现输入和输出功能,

1.java.io包中定义了多个流类型来实现输入和输出功能,可以从不同的角度对其进行分 类,按功能分为:(C),如果为读取的内容进行处理后再输出,需要使用下列哪种流?(G)   A.输入流和输出流 B.字节流和字符流 C.节点流和处理流   D.File stream E.Pipe stream F.Random stream G.Filter stream