Java实践(三)---常用的流和文件处理类
来源:互联网 发布:wegame 知乎 编辑:程序博客网 时间:2024/05/16 12:34
在Java.io中的类都将相对路径名解释为以用户工作目录开始
类很文件的概念定义在这里:http://blog.csdn.net/wee_mita/article/details/71157964
1、FileInputStream & FileOutputStream
可以提供辅助在一个磁盘文件上的输入流和输出流,只需要像其构造器提供文件名和文件的完整路径
try { FileInputStream fileInputStream = new FileInputStream("file.dat"); } catch (FileNotFoundException e) { e.printStackTrace(); } //此时只能从fileInputStream读入字节和字节数组
需要捕获异常,或者声明抛出FileNotFoundException
2、 DataInputStream & DataOutputStream
为了文件读入数字,首选创建一个FileInputStream,然后将其传递给DataInputStream的构造器
DataInputStream dataInputStream = new DataInputStream(fileInputStream);//fileInputStream在1中创建了 double value = dataInputStream.readDouble();
3、FilterInputStream & FilterOutputStream
这2个文件的子类用于向原生字节流添加额外的功能(如2中的DataInputStream)
可以通过嵌套过滤器来实现多重功能,例如,流在默认情况下是不被缓冲区缓存的,每个对read的调用都会请求操作系统在分发一个字节,相比之下,请求一个数据快并将其置于缓冲区中会显得更加高效
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);//在1中创建DataInputStream dataInputStream = new DataInputStream(bufferedInputStream);
4、写出文本文件 & 读入文本文件
PrintWriter printWriter = new PrintWriter("file.dat");//两种构造方式一样PrintWriter printWriter1 = new PrintWriter(new FileWriter(":file.dat"));String string = new String("你好!");int year = 2017;printWriter.print(string);printWriter.print(year);
Scanner scanner = new Scanner(System.in);//从键盘输入文本String string1 = scanner.nextLine();InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream,"UTF-8");//从文件读入文本并指定编码格式BufferedReader bufferedReader = new BufferedReader(inputStreamReader);String line;while ((line = bufferedReader.readLine())!=null){ String[] tokens = line.split("\\|"); }
5、转码和解码
java.nio包用Charset类统一了对字符集的转换。有了字符集就可以使用包含Unicode码元的Java字符串和编码而成的字节序列之间进行转换
5-1、如何编码Java字符串
String s = new String("abc");ByteBuffer byteBuffer = Charset.encode(s);//Java 8的nio包中没找到encode()这个方法 byte[] bytes = byteBuffer.array();
5-2、解码字节序列(需要有字节缓冲区)
byte[] bytes1;ByteBuffer byteBuffer1 = byteBuffer.wrap(bytes,1,10);CharBuffer charBuffer = Charset.decode(byteBuffer);//Java 8的nio包中没找到decode()这个方法String string2 = charBuffer.toString();
6、随机访问文件
RandomAccessFile类可以在文件中的任何位置查找或写入数据,磁盘文件都是随机访问的,但是从网络而来的数据流却不是
r : 读入
rw :读写
RandomAccessFile read = new RandomAccessFile("file.dat","r");RandomAccessFile readwrite = new RandomAccessFile("file.dat","rw");
随机访问文件有一个表示下一个将被读入或写出的字节所处位置的文件指针,seek方法可以将这个文件指针设置到文件中的任意字节位置,seek的参数是一个long类型的整数,它的值位于0到文件按照字节来度量的长度之间
7、ZipInputStream & ZipOutputStream
ZIP文档以压缩格式存储了一个或多个文件,每个ZIP文档都有一个头,包含注入每个文件名字和锁使用的压缩方法等信息
需要浏览压缩文档中的每个单独的项,getNextEntry
方法可以返回一个描述这些想的ZipEntry类型的对象
FileInputStream fileInputStream1 = new FileInputStream("file.zip" ); ZipInputStream zipInputStream = new ZipInputStream(fileInputStream); ZipEntry zipEntry; while ((zipEntry=zipInputStream.getNextEntry())!=null){// analyze entry;// read the contents of zipInputStream; zipInputStream.closeEntry(); } zipInputStream.close();
在读入单个ZIP项后,不要关闭ZIP输入流,也不要将其传递给可能会关闭它的方法
FileOutputStream fileOutputStream = new FileOutputStream("file.zip");ZipOutputStream zipOutputStream = new ZipOutputStream(fileOutputStream);ZipEntry zipEntry1 = new ZipEntry("file1");zipOutputStream.putNextEntry(zipEntry);zipOutputStream.closeEntry();zipOutputStream.close();
- Java实践(三)---常用的流和文件处理类
- 疯狂JAVA讲义---第十五章:输入输出(上)流的处理和文件
- JAVA流和文件
- C常用字符串和文件处理函数
- 程序实践系列(十):C++流和文件流
- Java——第六章(异常处理和文件IO流操作)
- Java——第六章(异常处理和文件IO流操作)—项目案例
- SPL函数的使用和文件处理类库(5)
- 流和文件(文件的保存)
- Java IO流和文件
- 流和文件的区别
- 路径和文件处理
- 函数和文件处理
- Java - 递归 - 和文件流关联的集合 - Properties
- Java开发之删除文件夹和文件的工具类
- java io 文件夹和文件的拷贝
- Java IO流和文件之一(概念)
- Java IO流和文件之一(例子)
- viewpager嵌套fragment,滑动别的fragment之后,之前的fragment数据重新加载,恢复默认了
- sublime Text 3 for mac 屏蔽更新提醒
- hibernate 操控对象封装方法
- Android API 与Android version对应表
- React官网(1)—元素渲染
- Java实践(三)---常用的流和文件处理类
- 【算法题】组装三角形
- View自定义学习
- 使用nginx发现接口获取到的数据被截取
- 简单的上拉加载下拉刷新实现
- 使用PDH性能计数器(Windows)获取CPU使用率、可用物理内存、上传/下载速率、磁盘读写速率
- 解决ubuntu usb开机无法使用,只有重启才可恢复问题
- Android开发入门之采用Service实现电话应用
- google gcm接入