`
ganshisheng
  • 浏览: 42512 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java文件操作

阅读更多
1.文件操作的基本流程:
  1、 通过File类找到一个文件
  2、 通过File类去实例化字节流、字符流操作类
  3、 进行读或写的操作,在写的时候如果文件不存在则会自动创建
  4、 关闭流并释放资源

2.字节流
在字节流中分为两种:
    输出流:OutputStream
    输入流:InputStream

2.1 输出流
定义:abstract class OutputStream extends Object implements Closeable, Flushable
      |-OutputStream子类:FileOutputStream
      |-构造方法:public FileOutputStream(File file)
输出方法: void write(byte[] b) 将 b.length 个字节从指定的字节数组写入此输出流
需要将一个字符串变为一个byte数组,通过方法:public byte[] getBytes() 将String转化成byte[]。
关闭流:void close() 关闭此输出流并释放与此流有关的所有系统资源。
例1.程序如下:(代码没有优化,只为实现效果)
		// 1.通过File找到一个文件
		File file = new File("e:\\hello.txt");
	
		try {
			// 2.通过子类实例化
			OutputStream out = new FileOutputStream(file);
			String str = "Hello World!!!!";
			byte b[] = str.getBytes();
			// 3.写操作
			out.write(b);
			// 4.关闭流
			//out.close();
		} catch (Exception e) {}

2.2 输入流
使用InputStream读取内容。
InputStream也是一个抽象类,所以必须使用其子类:FileInputStream
读的方式:
int read(byte[] b) 从输入流中读取一定数量的字节并将其存储在缓冲区数组 b 中。
   |- 传入一个byte数组,将所有的内容保存在byte数组之中。
   |- 此方法返回向数组中写入数据的个数
将byte数组变为字符串:public String(byte b[])、public String(byte b[],int be,int len)
例2.
		File file = new File("e:\\hello.txt") ;
		try {
			// 通过子类实例化
			InputStream input = new FileInputStream(file);
			byte b[] = null;
			int len = 0;
			b = new byte[1024];//
			// 把所有的内容读到数组b中
			// 返回读取的个数
			len = input.read(b);
			input.close();
			System.out.println(new String(b, 0, len));
		} catch (Exception e) {}


在读取文件的时候,我们需要设置byte[]的长度,如果大了,那么空间就会浪费,至于如何根据文件大小设置
长度,将b = new byte[1024];替换成 b = new byte[(int)file.length()] ;就行了。

3.字符流
一个字符 = 两个字节。
在字符流操作中,主要使用以下两个类:
   字符输出流:Writer
   字符输入流:Reader

3.1 字符输出流
写字符串: void write(String str) 写入字符串。
例3.
		try {
			// 通过子类实例化
			Writer out = new FileWriter(new File("e:\\hello.txt"));
			String str = "Hello World!!!!!";
			out.write(str);
			out.close();
		} catch (Exception e) {}

3.2 字符输入流
读的方法:
  |-  int read(char[] cbuf) 将字符读入数组。
  |-  int read() 读取单个字符。
例4.
		try {
			// 通过子类实例化
			Reader input = new FileReader(file);
			char c[] = null;
			int len = 0;
			c = new char[(int) file.length()];
			len = input.read(c);
			System.out.println(new String(c, 0, len));
			input.close();
		} catch (Exception e) {}

4. 字节流和字符流的区别
所有的文件不管是使用Output、Writer实际上最终保存在文件上的都是字节。字符是在内存中形成的。
例如将例1中的out.close();注释掉,表示不关闭输出流。

     // 1.通过File找到一个文件
     File file = new File("e:\\hello.txt") ;
    // 2. 输出流操作类
    OutputStream out = null;
    try {
        // 2.通过子类实例化
         out = new FileOutputStream(file);
        String str = "Hello World!!!";
        byte b[] = str.getBytes();
        // 3.写操作
         out.write(b);
        // 4.关闭流
         //out.close();
    }catch (Exception e) {}
我们观察到字符串依然写到文件里,证明字节流是直接操作文件本身的。再看字符流的输出,我们将程序例3
的关闭流语句注释了,运行之后,发现文件虽然创建,但是内容并没有写进去,这是因为对于字符流在关闭操
作的时候,会强制性的将缓存清空,那么以上代码并没有关闭,所以现在的内容还在缓存里,并没有直接到文
件之中。想如何在不关闭流的情况下写文件呢?
在Writer类中提供了一个强制性清空缓存的操作: abstract void flush() 刷新此流。
将out.close();替换为   out.flush() ;
分享到:
评论

相关推荐

    java文件操作类

    java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java...

    Java文件操作封装类

    Java文件操作封装类

    java文件操作工具类

    java文件操作工具类是java中针对文件操作的一个工具类,可以方便的读取,下载,上传文件等操作,希望可以帮到大家。

    java视频教程—Java文件操作

    java视频教程 Java文件操作 JavaFile

    java文件操作大全

    如何在Java中操作文件呢?转载供大家欣赏

    java文件操作(增删改查)

    本项目"java文件操作(增删改查)"是基于控制台实现的一个无界面程序,利用Eclipse集成开发环境编写,实现了基本的文件管理功能。下面我们将深入探讨这些知识点。 首先,我们要了解Java中的`java.io`包,它是处理输入...

    Java文件操作一例:Copy 复制文件.rar

    Java文件操作一例:Copy 复制文件,虽然是复制文件,不过通过本源码你可以学习很多相关的Java基础技巧,比如Java对文件的事件处理、取得目录内容的事件处理、如何弹出文件选择器、如何得到选择文件的绝对路径、如何...

    java文件操作大全.chm

    java文件操作大全.chm

    java 文件操作工具

    java 文件操作 压缩文件 解压文件 复制文件 复制文件夹

    java 文件操作工具类

    java 文件操作工具类

    java 文件操作大全107种情况

    java 文件操作 包括 文件删除 导出jsp Word 格式文件 ,文件合并修改等。

    《Java文件操作大全》电子书

    《Java文件操作大全》电子书 本文汇集常用文件操作方法,包括文件的建立/检查与删除,目录的建立/检查与删除,取出目录中文件,文件属性的取得,逐行读取数据等等。

    Java文件操作大全

    最全的java文件操作大全,包括文件的存储,建立,判断文件是否存在,建立文件删除文件,附加源码!!!

    Java文件操作方法总结

    Java文件操作中的一些常用方法的总结,可以参考参考啦!

    java文件操作.xmind

    里面包含了File类的作用、IO流、字节流字符流、异常处理、缓冲流、转换流、序列化、打印流的详细讲解

    Java文件操作大全[汇编].pdf

    Java文件操作大全[汇编].pdf

    Java文件操作类

    pan.razerpen.file中提供一个多对象单文件存储类FileMap和一个单对象单文件存储类FilePage。 提供方便快捷的基本类型和对象的文件存取方式。详细用法见sample.razerpen.file

Global site tag (gtag.js) - Google Analytics