> 文章列表 > java——文件管理与输入输出

java——文件管理与输入输出

java——文件管理与输入输出

数据如何进行持久化存储?
使用文件进行存储。
面向对象程序是如何完成数据的持久化存储?
面向对象程序是通过流将数据保存到文件的。
什么是流?
是指同一台计算机或网络中不同计算机之间有序运动着的数据序列。Java把这些不同来源和目标的数据都统一抽象为数据流。(数据流可分为输入流和输出流)
输入流和输出流提供了一条通道程序,用户可以使用这条通道读取源中的数据或把数据传送到目的地。
输入流的指向称为源,程序从指向源的输入流中读取源中的数据;
输出流的指向是数据要去的一个目的地,程序通过向输出流中写入数据把数据传送到目的地。

流式输入输出的特点:
数据的获取和发送沿数据序列的顺序进行,即每一个数据都必须等待排在它前面的数据,等前面的数据读入或送出之后才能被读写。
Java中的流:
Java语言中提供了比较完善的处理输入输出数据的功能,实现这些I/O操作的类和接口都在java.io包中。java.io包中提供了各种各样的输入输出流类,它们都是Object类的直接子类,每一个流类代表一种特定的输入或输出流。
字节流:读写以字节为单位进行。基本输入流(InputStream)和基本输出流(OutputStream);
字符流:读写以字符(Unicode)为单位进行。基本输入流(Reader)和基本输出流(Writer)。

文件管理类

File类的介绍

File类的对象主要用来获取文件本身的一些信息,例如文件所在的目录、文件的长度、文件读写权限等,不涉及对文件的读写操作。

构造方法如下:

File(String pathname)

File(String parent, String childe)      \\\\参数parent表示目录或文件所在路径,参数child表示目录或文件名称。

File(File parent, String child)     

File(URI uri)                   //使用URI创建一个文件

public File(String pathname):创建一个对应于参数pathname的File类对象。参数pathname是包含目录和文件名的字符串。如果没有文件名,则代表目录

File file1 =  new File("c:\\\\....")    \\\\创建一个指向目录的(或文件的)文件类对象

public File(File parent, String child):该构造函数与上面一个的不同之处,在于将parent的参数类型由String变为File,代表parent是一个已经创建了的File类文件对象(指向目录)。

File file1=new File("d:\\\\javaex\\\\chapter10");

File file2=new File(file1, "example.java");

File 类常用方法

boolean canExecute()         //执行判定
boolean canRead()         //可读性判定
boolean canWrite()          //可写性判定
boolean exists()          //存在性判定
boolean isAbsolute()         //相对与绝对路径判定
boolean isDirectory()         //目录文件判定
boolean isFile()             //普通文件判定
boolean isHidden()         //文件隐藏属性判定

boolean delete()              //删除
boolean mkdir()             //创建一个目录
boolean mkdirs()              //创建多个目录
boolean renameTo(File dest)      //重命名文件

boolean setLastModified(long time)       //设置时间属性(拥有者)
boolean setReadOnly()     //设置只读属性(拥有者)     
boolean setWritable(boolean writable)               //设置可写属性(拥有者)

String getName()         //返回文件名
String getParent()         //返回父路径
File  getParentFile()     //返回父路径的文件对象
String getPath()          //返回文件的路径
File getAbsoluteFile()     //返回绝对路径的文件对象
String getAbsolutePath() //返回绝对路径
long lastModified()     //返回文件的最后修改时间
long length()          //返回文件长度

String[] list()     
//列出当前目录文件下的所有文件,返回字符串数组
File[] listFiles()             
//列出当前目录文件下的所有文件,返回文件对象数组

 例:查看指定目录下的所有的文件及目录

//列出"d:\\\\java_dev"目录下的所有文件及目录
 File dir=new File("d:\\\\java_dev");
    String[] filename=dir.list();
    for(int i=0;i<filename.length;i++){
        System.out.println(filename[i]);
    }

如何运行本地上的软件?

//运行本地机上的暴风影音软件,软件目录要随具体情况改变
Runtime ec=Runtime.getRuntime();
try {
       ec.exec("D:\\\\Program Files
       \\\\Baofeng\\\\StormPlayer
       \\\\StormPlayer.exe");
} catch (IOException e) {                 
     e.printStackTrace();
}

字节流

字节输入流

FileInputStream类创建的对象被称为文件字节输入流, FileInputStream 类是抽象类InputStream的直接子类,该类的所有方法都是从InputStream类继承而来的。
FileInputStream类对象的创建
可以通过FileInputStream类的构造方法完成FileInputStream类对象的创建,要构造一个该流类对象,所连接的文件必须存在而且是可读的。

public FileInputStream(String name) throws
                       FileNotFoundException;
public FileInputStream(File file) throws
                       FileNotFoundException;

文件读取的方法

FileInputStream类对象可以调用其read方法,完成从指定文件输入数据工作,即读取文件,以下方法到达文件末尾都会返回-1

public int read() throws IOException
       //读取源中单个字节数据,返回0~255的整数。
public int read(byte[] b) throws IOException
       //读取b.length个字节,并将读取的字节存放
       //到数组b中,方法返回实际读取的字节个数。
public int read(byte[] b, int off, int len)
                           throws IOException
    //读取len个字节, off是首字节在数组中的存
      //放位置,方法返回实际读取的字节个数。