zoukankan      html  css  js  c++  java
  • 输入和输出--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();
    	}
    
    }
    


  • 相关阅读:
    C++ 黑白棋AI minimax+alphabeta剪枝
    BZOJ2839 集合计数 容斥
    BZOJ2287 消失之物
    CF235B Let's Play Osu! 期望DP
    线性基
    [HAOI2008]糖果传递 结论题
    [HAOI2007]上升序列
    线性筛及线性递推欧拉函数
    Codeforces 1064D/1063B Labyrinth
    洛谷P2120 [ZJOI2007]仓库建设 斜率优化DP
  • 原文地址:https://www.cnblogs.com/LinkinPark/p/5233109.html
Copyright © 2011-2022 走看看