IO流(一)

IO

Input 输入
Output输出

文件

new File(String 文件路径)
文件路径分隔符有/或者\,在其它操作系统可通过File.separator获取分隔符

常用功能

判断功能 : isFile(),isDiretory(),exists()
创建目录 : mkdir(),mkdirs()
获取子目录和文件 : listFiles()
删除和重命名、移动等 : delete(),deleteOnExit(),renameTo()

相对路径

IO流

Input输入流:从文件读取内容
Output输出流: 向文件写入内容

字节流

以字节为单位操作数据
输入流是抽象类,需要子类,即:
FileInputStream : 文件输入流
FileOutputStream : 文件输出流
特点:流是单向的

 

读取步骤:
	1)创建输入流对象
	2)读取内容
	3)关闭输入流

 

FileInputStream fis = new FileInputStream(new File("1.txt"));
System.out.println((char)read);
fis.close();

还可以一次读取多个字节

 

FileInputStream fis = new FileInputStream("1.txt");
byte[]byte = new byte[3];
//将读取的内容以每次三个字节填充到byte数组中,返回读到的字节总数
//若是返回的字节总数为-1,证明读取完毕,这常用于循环语句读取完毕跳出循环的条件
int len =fis.read(byte);

        5行

	输出步骤:
		1)创建输出流对象
		2)向输出流写入内容
		3)关闭输出流

 

FileOutputStream fos = new FileOutputStream("2.txt");
fos.write(new byte[]{88,98,108});
fos.close();

 

	复制步骤:
		1)分别创建输入流和输出流对象
		2)向输入流读取内容
		3)向输出流写入内容
		4)关闭输入流和输出流
			注意事项:考虑文档不存在的情况造成的异常

 

public class DemoFileCopy2 {
    public static void main(String[] args)  {

        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;
        try {
            bis = new BufferedInputStream(new FileInputStream("1.txt"));
            bos = new BufferedOutputStream(new FileOutputStream("3.txt"));
            while (true) {
                byte[] buf = new byte[1024];
                int len = bis.read(buf);
                if (len == -1) {
                    break;
                }
                bos.write(buf, 0, len); // 实际读到len个字节,就写入len个字节
            }
        } catch(Exception e) {
            e.printStackTrace();
        } finally {
            if(bis!=null) { // 不为null时才能关闭
                try {
                    bis.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if(bos!=null) { // 不为null时才能关闭
                try {
                    bos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

字符流

以字符为单位处理流的内容
Reader字符输入流
Writer字符输出流
InputStreamReader 将字节流转为字符流
OutputStreamWriter 将字节流转为字符流
BufferedReader: 将行为单位处理字符流,与InputStreamReader同级
Bufferedwriter: 将行为单位处理字符流,与OutputStreamwriter同级

 

输入流步骤:
	1)将字节流转换为字符流
	2)读取
	3)关闭外层的流
具体编码和字节输入流类似,不同之处主要就第一步

 

\\"utf-8" : 实际文件编码应与读取时的文件编码一致
InputStreamReader reader = new InputStreamReader(new FileInputStream("1.txt"), "utf-8");
......
reader.close();
阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭