`

I/O操作(上)

阅读更多

    我一直奇怪于为什么在我前面所学到的内容里,没有从键盘输入的语句,而今天所学的给了我很好的解答,这些内容全部包括在java.io包下。这一篇里所讲到的东西包括,File类(如何创建和删除文件,对文件写入和从文件读出)。
    File类有两个构造方法,File(父目录,文件名),关联指定的目录下指定名称的文件,File(文件名/目录名),关联某个文件名或者目录,这里的/表示的意思是“或者”。
    比较好的方法是先用一个File对象关联一个目录名,然后创建这个目录,(mkdir()),再用构造方法构造一个文件。以下的代码是在“我的文档”里创建一个名为“1.txt”的文件。
  File dir=new File("C:"+File.separator+"Documents and Settings"+File.separator+"Yxy"+File.separator+"My Documents");  //此处注意转义字符
  dir.mkdir();  //创建目录
  File file1=new File(dir,"1.txt");
  file1.createNewFile();  //创建一个新文件
        String[] str1=dir.list();  //下文说到的list()
    //不知道为什么这里的空格硬是只能这么长,代码是我从我自己的代码里拷过来的,汗      
    //一个先
    各位,其实这里可以用转义字符“\\”来代替File.separator,但是这不是一个好的习惯。为了实现Java的一次编译,四处运行的性感特点,我们需要一个通用的文件分隔符,因为各种操作系统下存在差异,比如linux的文件分隔符是正斜杠"/"。而File的特性separator正是获取当前操作系统下的文件分隔符。另,千万不要将让"\"单独存在,在代码中这是一个转义字符的标识,它会将接下来的一个字符理解为转义字符。
     除了这种方法可以创建新的文件,还可以调用File类下的一个静态函数
File createTempFile(String prefix,String suffix,File directory),这是一个完整的版本,在指定的目录下创建一个以prefix为前缀名,suffix为后缀名的临时文件,通过deleteOnExit()来删除。但是还有一个精简的版本,
File createTempFile(String prefix,String suffix),没有指定目录,将在当前操作系统默认的临时文件夹里创建以prefix为前缀名,suffix为后缀名的临时文件。
     以上是如何创建文件,接下来讲的是如何查阅目录下的文件和通过文件过滤器查找文件。
    看到前面的代码里写到的list()方法了吗,返回一个String类型的数组,获取当前目录下的所有文件名,包括目录名(即文件夹)。但是,这样是不够的,无法找到我们所需要的文件,我们需要的是按我们的要求找到某个房间。Java.io包类提供类文件过滤器FileNameFilter,它是一个接口,内有方法boolean accept(File dir, String name),这是一个需要重写的方法,重写了这个方法之后,list(FileNameFileter f)方法可以列出符合我们要求的方法。
    以下是我练习的代码。
import java.io.*;
class FileNameFilterInstance implements FilenameFilter //文件过滤器
{
public boolean accept(File dir,String name)
{
  return name.indexOf(".java")!=-1; //注意返回类型,indexof()返回索引或者-1,而             //accept要求返回boolean
}
}
class Test1
{
public static void main(String[] args) throws Exception  //此处注意抛出异常
{
  File dir=new File("C:"+File.separator+"Documents and Settings"+File.separator+"Yxy"+File.separator+"My Documents");  //此处注意转义字符
  dir.mkdir();
  File file1=new File(dir,"1.txt");
  file1.createNewFile();
  File file2=File.createTempFile("hello",".java",dir); //在dir指定目录下创建hello.java,前缀至少3字长
    String[] str1=dir.list();
  for(int i=1;i<str1.length;i++)
   System.out.println(str1[i]);
  System.out.println("--------------------------");
  String[] str2=dir.list(new FileNameFilterInstance());
  for(int i=0;i<str2.length;i++)
   System.out.println(str2[i]);
  file1.deleteOnExit();  //退出时删除文件
  file2.deleteOnExit();
  Thread.sleep(5000);
}
}
/*在"我的文档"下创建1.txt和hello.java返回我的文档下的所有文件和目录名,并根据文件过滤器检查到hello.java,最后在退出时删除创建的文件,期间创建文件用到了createNewFile和静态方法createTempFile*/
分享到:
评论

相关推荐

    Linux下必用的I/O 操作手段I/O文件

    在Linux操作系统中,I/O操作是程序与外部设备交互的关键途径。系统调用是用户空间程序与内核交互的桥梁,提供了对操作系统功能的访问。Linux系统调用包括多种类型,其中I/O相关的调用是程序员必须掌握的重要部分,...

    Zabbix动态监控磁盘I/O

    首先,Zabbix的磁盘I/O监控主要依赖于Zabbix Agent,这是一个在被监控服务器上运行的客户端程序,它可以收集各种系统状态数据并将其发送到Zabbix Server。在Zabbix Agent的配置文件(通常是`/etc/zabbix/zabbix_...

    Unix I/O 小结

    Unix I/O系统是操作系统的核心部分,它提供了对文件和设备进行输入输出操作的接口。本文主要总结了Unix下的I/O模型及其相关系统调用。 在Unix中,每个进程都有一个打开文件描述符表,用于存储指向文件inode的指针和...

    java阻塞i/o与非阻塞i/o控制

    阻塞I/O模型是最常见的I/O模式,在Java中主要体现在`InputStream`和`OutputStream`等基本I/O类上。当一个线程调用read或write方法时,如果数据尚未准备好,那么这个线程会被挂起,即进入阻塞状态,直到数据准备就绪...

    嵌入式课程设计I/O接口

    6. **实时操作系统(RTOS)中的I/O管理**:在实时操作系统中,I/O操作必须满足严格的时序要求。理解RTOS如何调度I/O任务,如优先级抢占和时间片轮转,对实现高效I/O管理至关重要。 7. **中断控制器**:某些复杂的...

    异步I/O处理

    它与同步I/O形成鲜明对比,同步I/O在执行时会阻塞调用线程,直到I/O操作完成,而异步I/O则允许程序在等待I/O操作完成时继续执行其他任务,从而提高系统的整体效率。 在传统的同步I/O模型中,当一个线程发起读取或...

    怎么使用I/O编程???

    I/O操作的输入和输出是相对于当前运行的程序而言的。"读"是指从外部获取数据,如文件内容;"写"是指将数据输出到外部,如保存文件。Java中的I/O系统不仅涵盖了文件的读写,还包括网络数据交换、内存数据处理及控制台...

    异步通知和异步I/O

    在传统的同步操作中,当一个进程执行I/O操作时,它会被阻塞,直到I/O操作完成。而异步通知允许进程在发起I/O请求后立即返回,继续执行其他任务,而I/O操作则在后台进行。当I/O操作完成后,系统会通过特定机制(如...

    SHENZHEN I/O Manual (深圳 I/O 游戏手册)

    虽然手册中没有直接提及,但是通过描述可以得知SHENZHEN I/O是一款可以在Steam平台上购买的游戏。这可能意味着游戏会定期通过Steam平台更新,并可能与Steam社区进行互动。 9. 游戏的物理组件: 手册中提及的打印和...

    Single Root I/O Virtualization and Sharing 1.1 specification

    【Single Root I/O Virtualization and Sharing 1.1 规范】 Single Root I/O Virtualization and Sharing (SR-IOV) 是一种先进的技术,旨在优化计算机系统中的PCI Express(PCIe)I/O虚拟化。该规范的核心目标是...

    mac i/o kit 基本原理

    良好的驱动程序设计应考虑到性能因素,如减少不必要的I/O操作,合理使用缓存,以及避免阻塞线程等。了解设备特性和系统特性,结合Apple推荐的最佳实践,可以提高驱动程序的运行效率。 9. 实践与应用 学习I/O Kit...

    单片机课件 I/O口的扩展部分

    ### 单片机I/O接口的扩展及其应用 #### 一、I/O接口技术概述 在单片机系统中,I/O接口起着至关重要的作用,它...此外,通过对I/O操作指令的学习,开发者可以更加灵活地控制单片机的I/O口,从而实现各种复杂的功能。

    I/O完成端口模型

    在TCP/IP协议栈中,IOCP通过将I/O操作与执行这些操作的线程解耦,提高了系统的并行性和吞吐量。 IOCP的核心思想是将I/O操作的发起与完成分离。当一个I/O操作开始时,应用程序并不直接等待其完成,而是提交操作请求...

    重叠I/O类 代码

    重叠I/O是一种在Windows操作系统中实现异步通信的技术,它允许I/O操作与执行其他系统调用同时进行,从而极大地提高了系统效率和程序的并发性能。在这个项目中,我们有一个名为“LappedSocket”的类,它封装了重叠I/O...

    windows下六种socket I/O模型示例

    异步I/O是Windows最强大的I/O模型,它允许在I/O操作完成时通知应用程序,而不是在开始时。Windows API提供了`AsyncRead`和`AsyncWrite`函数来实现这种模型。这个模型特别适用于大文件传输和高并发场景。 6. **完成...

    如何在vb中调用i/o口的例子(10KB)

    在VB中,由于它主要是为应用程序开发设计的,不直接支持低级别的I/O操作,因此需要借助特定的方法或库来实现。 描述中的“10KB”可能指的是提供的示例代码或者资源的大小,暗示这是一个相对较小但包含关键功能的...

Global site tag (gtag.js) - Google Analytics