欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JAVA基础-输入输出流

程序员文章站 2023-12-10 08:51:34
一,File类:文件的创建和删除 1.File(String pathname):pathname是指路径名称。用法 File file = new File("d:/1.txt "); 2.File(String parent, String child):parent是父路径字符串,child是 ......

 

一,file类:文件的创建和删除

1.file(string pathname):pathname是指路径名称。用法 file file = new file("d:/1.txt ");

2.file(string parent, string child):parent是父路径字符串,child是子路径字符串。用法:file file = new file(" d:/", " letter.txt");

3.file(file f, string child)file file = new file();

如果当前目录里不存在名为word的文件,file类对象可以调用createnewfile()方法创建一个名为word的新文件。

还可以用文件对象的delete()方法删除掉文件。

public class filetest {
    public static void main(string[] args) {
    
        file file = new file("weord.txt");  //创建文件对象,在当前目录
        if(file.exists()) {
            file.delete();
            system.out.println("文件已删除");
        }else{
            try{                            //try语句块捕捉可能出现的异常
                file.createnewfile();       //在当前目录下创建文件
                system.out.println("文件已创建");
            }catch(exception e) {           
            e.printstacktrace();    //
        }
        }
    }
}

二,获取文件信息:都用特定方法获取文件的各类信息。

getname():获取文件的名称   length():获取文件的长度   getabsolutepath():获取文件的绝对路径   getparent():获取文件的父路径   lastmodified():获取文件最后修改时间

canread():判断是否可读   canwrite():判断是否可写   exits():判断是否存在   isfile():判断是否存在   isdirectory():判断是否是一个目录   ishidden():判断是否是隐藏文件 

我们把上面创建和删除的例子稍微改一下:

public class filetest {
    public static void main(string[] args) {
    
        file file = new file("word.txt");  //创建文件对象,在当前目录
        if(file.exists()) {                 //获取各类信息
            string name = file.getname();   
            system.out.println("文件名称是:"+ name);
            long length = file.length();
            system.out.println("文件长度是:"+ length);
            boolean hidden = file.ishidden();
            system.out.println("文件是隐藏文件吗?"+ hidden);
            string path = file.getabsolutepath();
            system.out.println("文件的绝对路径是:"+ path);
            boolean read = file.canread();
            system.out.println("文件是否可读?"+ read);
        }else{
            try{                            //try语句块捕捉可能的异常
                file.createnewfile();       //创建文件
                system.out.println("文件已创建");
            }catch(exception e) {           
            e.printstacktrace();    //
        }
        }
    }
}

一,文件输入/输出流 :fileinputstreamfileoutputstream

程序运行期间的大部分数据都在内存中进行操作,当程序结局了或者关闭后,这些数据都会消失。那么能不能把这些数据都永久的保存下来呢?

答案是肯定的:用文件输入/输出流与指定的文件建立连接,把数据永久性的保存到文件里

fileinputstream和fileoutputstream类都用来操作磁盘文件。前者具有基本的文件写入能力,后者有基本的文件读取能力。

fileinputstream有两种构造方法:

1.fileinputstream(string name):使用给定的文件名name创建一个fileinputstream对象。

2.fileinputstream(file file):这个构造方法允许在把文件连接输入流之前对文件做进一步分析。

fileoutputstream类有前者相同的参数构造方法。注意到是:创建一个fileinputstream对象时,可以指定不存在的文件名,但此文件不能是一个已经被其他程序打开的文件。

注意:fileinputstream类和fileoutputstream类都只提供了对字节字节数组的读取方法。汉字在文件中占用两个字节,所以读取不好会出现乱码。(所以下面提到的字符流比字节流更为简便)

import java.io.file;
import java.io.fileinputstream;
import java.io.fileoutputstream;

public class filetest {
    public static void main(string[] args) {
    
        file file = new file("word.txt");  //创建文件对象,在当前目录
        try {
            fileoutputstream out = new fileoutputstream(file);//创建fileoutputstream类对象
            byte buy[] = "我有java课,在每周一的一二节。".getbytes();//创建数组存放字符串的二进制
            out.write(buy);                //把数组中的信息写入到文件里
            out.close();                //把流关闭
        }catch(exception e){
            e.printstacktrace();
        }
        try {
            fileinputstream in = new fileinputstream(file);//创建fileintputstream类对象
            byte byt[] = new byte[1024];          //创建数组,定义内存大小
            int len = in.read(byt);                //获取写入信息的长度    
            system.out.println("文件中的信息是:"+ new string(byt, 0, len));//把文件中的信息输出
            in.close();                        //关闭流
        }catch(exception e){
            e.printstacktrace();
        }
}
}

虽然java在程序结束时自动关闭所有打开的流,但是当使用完流后,显示地(主动的)关闭所有打开的流是个好习惯。

 

二,filereaderfilewriter类(字符流)

filereader和filewriter类 对应了fileinputstream和fileoutputstream类。filereader流顺序地读取文件,只要不关闭流,每次调用read()方法就顺序地读取源中其余内容,直到源的末尾或流被关闭。

 

三,带缓存的输入/输出流:bufferinputstreambufferoutputstream

缓存是i/o的一种性能优化。缓存流为i/o流增加了内存缓存区。有了缓存区,使得在流上执行skip(), mark(), reset()等方法。

bufferinputstream类可以对所有inputstream类进行带缓存区的包装以达到性能的优化。有两个构造方法:

1.bufferinputstream(inputstream in):创建一个带有32个字节的缓存区。

2.bufferinputstream(inputstream in, int size):按指定的大小创建缓存区。

从构造方法能看出来:bufferinputstream对象位于inputstream类对象之前。 所以字节数据读取文件的过程是:文件 --> inputstream --> bufferinputstream --> 目的地

一个最优的缓存区的大小取决于所在的操作系统,可用的内存空间,机器配置。

 

使用bufferoutputstream输出信息和outputstream输出信息完全一样,不过bufferoutputstream有一个flush()方法来把缓存区的信息强制输出完。

1.bufferinputstream(inputstream in):创建一个带有32个字节的缓存区。

2.bufferinputstream(inputstream in, int size):按指定的大小创建缓存区。

2019-03-24         未完,  过两天补。