码迷,mamicode.com
首页 > 其他好文 > 详细

文件操作

时间:2020-08-28 11:50:08      阅读:42      评论:0      收藏:0      [点我收藏+]

标签:height   point   readline   tst   计算机   print   根据   添加   字节数组   

5.文件操作
  1. File类
  1. 构造函数:
  1. File fille = new File(String file);
  2. File fille = new File(String parent,String child);
  3. File fille = new File(File parentfile,String child); 
  1. 方法
canRead() canWrite() length()  isFile() renameTo() isDirectory()  isHidden() exists() createNewFile()  mkdir() mkdirs()  delete() 删除目录时,其下必须是空文件。
getName() 文件或目录的名称  getAbsolutePath()  抽象路径名的绝对路径名字符串。  getParent()  父路径名的路径名字符串 long lastModified()
File[] listFiles()  此抽象路径名表示的目录中的文件和目录
  1. 不希望获取全部子项, FileFilter是用于抽象路径名的过滤器
      File[] list = dir.listFiles(new FileFilter() {
    @Override
public boolean accept(File pathname) {    
return pathname.getName().startsWith(".");    }});
  1. 层级分隔符File.separator,在window系统中new File("D:\t\t.txt");而在linux系统中是new File("/t/t.txt");为了解决兼容使用new File("D:"+File.separator +"t"+File.separator +"t.txt");
  1. RandomAccessFile-文件操作类
  1. 对文件随机访问的操作,访问包括读和写操作。该类名为    RandomAccessFile。该类的读写是基于指针的操作。RandomAccessFile在对 文件进行随机访问操作时有两个模式,分别为只读模式(只读取文件数据  r),和读写模式(对文件数据进行读写 rw,rw时文件不存在会自动创建)。如果此类中的所有读取例程在   读取所需数量的字节之前已到达文件末尾,则抛出 EOFExcept
  2. 如果由于某些原因无法读取任何字节,而不是在读取所需  数量的字节之前已到达文件末尾,则抛出 IOException
RandomAccessFile(String filename,String mode)
RandomAccessFile(File file,String mode) 
  1. 方法(都抛出IOException)
  1. Read、write基本数据类型,字符串(readUTF() readLine())
  2. void write(int d) 该方法会根据当前指针所在位置处写入一个字节,    是将参数int的”低8位”写入。
  3. Write(byte[b]) Write(byte[b],int start,int len)
  4. int read() 指针位置读取一个byte(8位) 填充到int的低八位, 高 24位为0, 返回值范围正数: 0~255, 如果返回-1表示读取到了文件末尾EOF  每次读取后自动移动文件指针, 准备下次读取。返回值为实际读取到的字节量
  5. int read(byte[] b)  最多读取b.length个字节到数组,返回实际读取字节个数。
  6. int read(byte[b],int off,int len) 从 off处开始读len个字节,返回实际读取字节个数。
  7. long getFilePointer() 获取当前指针位置的方法
  8. void seek(long pos)该方法可以移动指针到指定位置。
  9. int skipBytes(int n)尝试跳过输入的 n 个字节以丢弃跳过的字      节, n 为负数,则不跳过任何字节
  10. length()
  11. void close()  释放与其关联的所有系统资源。
  1. 字节流:InputStream和OutputStream
Input:外部到内存写入  output:内存输出到外部
节点流、处理流:节点流和节点直接相连,处理流套结在节点流上进行封装,读取数据。
  1. OutputStream方法(抛出IOException)
  1. void write(int n) 低八位写入
  2. void write(byte[] b)  写入字节数组
  3. void write(byte[] b,int off,int len)  字节位置、长度
  4. Void close()
  1. InputStream方法(抛出IOException)
  1. int read() 从输入流中读取数据的下一个字节,结束返回-1
  1. int read(byte[] b)  最多读取b.length个字节到数组,返回实际读取字节个数。
  1. int read(byte[] b, int off, int len) 将输入流中最多 len 个       数据字节读入 byte 数组。返回实际读取的个数。
  2. void close()  关闭流
  1. 字符流:Reader和Writer(使用了缓存区)
  1. 字符流是以字符为单位读写数据,所以字符流仅能读写文本数据,本质上字符流读写字符是会自动与字节进行转换进行读写,所以底层还是读写字节。
  2. 方法:同上,都抛出IOException
Reader方法:
  1. int read() 从输入流中读取数据的下一个字符
  2. int read(char[] b)
  3. int read(char[] b, int off, int len) 将输入流中最多 len 个       数据字符读入 char 数组。
  4. void close()  关闭流
Write方法:
  1. void write(int n) 低16位(2个字节)写入
  2. void write(char[] b)  写入字符数组
  3. void write(char[] b,int off,,int len)  字符位置、长度
  4. Void close()
  5. Write方法增加void write(String str)void write(String str,        int off, int len) 写入字符串的某一部分。
  1. FileInputStream和FileOutputStream(操作磁盘文件)
  1. FileOutputStream
  1. 构造方法:(如果不存在,会创建一个文件)
  1. FileOutputStream(String name)(若文件有数据,write将会清除数据)
  2. New FileOutputStream(File file,boolean b)向文件末尾write
  1. 方法:同OutputStream
  1. FileInputStream(同InputStream)
  1. FileReader和FileWriter(参考RW)(如果不存在,会创建一个文件)
  1. New FileWriter(File file)(若文件有数据,write将会清除数据)
  2. New FileWriter(String name)
  3. New FileWriter(File file,boolean b)是否在文本后添加
  4. New FileWriter(String str,boolean b)
  1. 带缓存的IO流:(套接在其他流之中):缓冲流有一个数组,读取的时候会读取一个数组存入,read()读取一个字节
  1. BufferedInputStream和BufferedOutputStream
  1. BufferedOutputStream(增加了一个flush()方法把缓存的数据输出)
  1. BufferedReader和BufferedWrit er
  1. 构造方法
 
BufferedReader(Reader in)  创建一个默认大小输入缓冲区的缓冲字符输入流。
BufferedWriter(Writer out)  创建默认大小输出缓冲区的缓冲字符输出流。
 
  1. BufferedReader增加String readLine()方法,为空返回null
  2. Bu`fferedWriter增newLine() 写入一个行分隔符。
  1. 转换流(InputStreamReader和OutpteStreamWirter)
  1. 很多字符流都只能处理其他字符流,但是低级流都是字节流,所以就需要现将字节流转换成字符流才可以被其他高级流使用。转换流还能指定读写字符的字符集。
  2. 构造函数
InputStreamReader(InputStream in)使用默认字符编码
InputStreamReader(InputStream in,字符集)使用自定义字符集
OutputStreamWriter(Ou。tputStream out)使用默认字符编码
OutputStreamWriter(OutputStream out,字符集) 使用自定义字符集
  1. InputStreamReader是字节流通向字符流的桥梁,读取字节并将其解码为字符
int read() 读取单个字符。
Int read(char[] c)   读取字符数组
Int read(char[] c, int offset, int length)将字符读入数组中的某一部分。
  1. OutputStreamWriter 是字符流通向字节流的桥梁
write(int c)  写入单个字符。
write(char[] c)
write(char[] cbuf, int off, int len)  写入字符数组的某一部分。
write(String str, int off, int len) 写入字符串的某一部分。
  1. DataInputStream和DataOutputStream
  1. 数据输入输出流可以以和机器无关的方式从底层输入输出流中读取基本java数据类型DataOutputStream(OutputStream out) DataInputStream(InputStream out)
  2. Read()、write()  读写基本数据类型
  3. 字符串方法:
  1. DataInputStream提供
readUTF()
  1. DataOutputStream提供
writeBytes(String s)
writeChars(String s)
writeUTF(String s)写入字符串
  1. 对象流(ObjectInputStream和ObjectOutputStream)
  1. 含义:对象是存在于内存中的。有时候我们需要将对象保存到硬盘上,又有时我们需要将对象传输到另一台计算机上等等这样的操作。这时我们需要将对象转换为一个字节序列,而这个过程就称为对象序列化。相反,我们有这样一个字节序列需要将其转换为对应的对象,这个过程就称为对象的反序列化。
  2. 构造函数
ObjectInputStream(InputStream in)
ObjectOutputStream(OutputStream out)
  1. ObjectOutputStream把对象序列化方法:
  1. void  writeObject(Object o)  把对象的类变量、方法,类签名序列   化,      静态变量和静态方法不能被序列化。 
  1. ObjectInputStream把对象反序列化方法:
  1. readObject() 方法用于从流读取对象应该使用 Java 的安全强制转           换来获取所需的类型
  1. Serializable接口
  1. ObjectOutputStream在对对象进行序列化时有一个要求,就是需要序列化的对象   所属的类必须实现Serializable接口。实现该接口不需要重写任何方法。其只是作为可  序列化的标志。实现该接口的类需要提供一个常量serialVersionUID,表明该类的版本  不指定的话,系统根据类的结构自定义值,如果结构改变,这个反序列化就会失败,如果指定了值得,结构改变也能成功(可默认,跨平台最好定义)
  2.  transient关键字:对象进行序列化时可以忽略某些不必要的属性7的值(只能修饰变量,不能修饰方法和类)比如:private  transient int a = 7;
  1. PrintWriter类
是具有自动行刷新的缓冲字符输出流。为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式,println和print方法 
构造方法:
  1. 处理文件流,第二个参数可以指定字符集:
PrintStream(File file)   PrintStream(String fileName)
PrintWriter(File file)  PrintWwriter(String fileName)
  1. 处理其他流:字节流和字符流,第二个参数传入一个boolean autoFlush,说明是否支持自动行刷新。(默认为false)
PrintStream(OutputStream out)   PrintWriter(OutputStream out)
PrintWriter(Writer out)  
 
10.内存操作流
ByteArrayInputStream ByteArrayOutputStream ,把数据读写到内存中。
 
 

文件操作

标签:height   point   readline   tst   计算机   print   根据   添加   字节数组   

原文地址:https://www.cnblogs.com/zhouyanger/p/13548817.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!