java常用的文件读写操作
现在算算已经做java开发两年了,回过头想想还真是挺不容易的,java的东西是比较复杂但是如果基础功扎实的话能力的提升就很快,这次特别整理了点有关文件操作的常用代码和大家分享
1.文件的读取(普通方式)
(1)第一种方法
- File f=new File("d:"+File.separator+"test.txt");
- InputStream in=new FileInputStream(f);
- byte[] b=new byte[(int)f.length()];
- int len=0;
- int temp=0;
- while((temp=in.read())!=-1){
- b[len]=(byte)temp;
- len++;
- }
- System.out.println(new String(b,0,len,"GBK"));
- in.close();
这种方法貌似用的比较多一点
(2)第二种方法
- File f=new File("d:"+File.separator+"test.txt");
- InputStream in=new FileInputStream(f);
- byte[] b=new byte[1024];
- int len=0;
- while((len=in.read(b))!=-1){
- System.out.println(new String(b,0,len,"GBK"));
- }
- in.close();
2.文件读取(内存映射方式)
- File f=new File("d:"+File.separator+"test.txt");
- FileInputStream in=new FileInputStream(f);
- FileChannel chan=in.getChannel();
- MappedByteBuffer buf=chan.map(FileChannel.MapMode.READ_ONLY, 0, f.length());
- byte[] b=new byte[(int)f.length()];
- int len=0;
- while(buf.hasRemaining()){
- b[len]=buf.get();
- len++;
- }
- chan.close();
- in.close();
- System.out.println(new String(b,0,len,"GBK"));
这种方式的效率是最好的,速度也是最快的,因为程序直接操作的是内存
3.文件复制(边读边写)操作
(1)比较常用的方式
- package org.lxh;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.InputStream;
- import java.io.OutputStream;
- public class ReadAndWrite {
- public static void main(String[] args) throws Exception {
- File f=new File("d:"+File.separator+"test.txt");
- InputStream in=new FileInputStream(f);
- OutputStream out=new FileOutputStream("e:"+File.separator+"test.txt");
- int temp=0;
- while((temp=in.read())!=-1){
- out.write(temp);
- }
- out.close();
- in.close();
- }
- }
(2)使用内存映射的实现
- package org.lxh;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.nio.ByteBuffer;
- import java.nio.channels.FileChannel;
- public class ReadAndWrite2 {
- public static void main(String[] args) throws Exception {
- File f=new File("d:"+File.separator+"test.txt");
- FileInputStream in=new FileInputStream(f);
- FileOutputStream out=new FileOutputStream("e:"+File.separator+"test.txt");
- FileChannel fin=in.getChannel();
- FileChannel fout=out.getChannel();
- //开辟缓冲
- ByteBuffer buf=ByteBuffer.allocate(1024);
- while((fin.read(buf))!=-1){
- //重设缓冲区
- buf.flip();
- //输出缓冲区
- fout.write(buf);
- //清空缓冲区
- buf.clear();
- }
- fin.close();
- fout.close();
- in.close();
- out.close();
- }
- }
java常用的文件读写操作的更多相关文章
- Java 字节流实现文件读写操作(InputStream-OutputStream)
Java 字节流实现文件读写操作(InputStream-OutputStream) 备注:字节流比字符流底层,但是效率底下. 字符流地址:http://pengyan5945.iteye.com/b ...
- Golang: 常用的文件读写操作
Go 语言提供了很多文件操作的支持,在不同场景下,有对应的处理方式,今天就来系统地梳理一下,几种常用的文件读写的形式. 一.读取文件内容 1.按字节读取文件 这种方式是以字节为单位来读取,相对底层一些 ...
- Java 字符流实现文件读写操作(FileReader-FileWriter)
Java 字符流实现文件读写操作(FileReader-FileWriter) 备注:字符流效率高,但是没有字节流底层 字节流地址:http://pengyan5945.iteye.com/blog/ ...
- java文件读写操作类
借鉴了项目以前的文件写入功能,实现了对文件读写操作的封装 仅仅需要在读写方法传入路径即可(可以是绝对或相对路径) 以后使用时,可以在此基础上改进,比如: 写操作: 1,对java GUI中文本框中的内 ...
- [转]Android - 文件读写操作 总结
转自:http://blog.csdn.net/ztp800201/article/details/7322110 Android - 文件读写操作 总结 分类: Android2012-03-05 ...
- Kotlin入门(27)文件读写操作
Java的文件处理用到了io库java.io,该库虽然功能强大,但是与文件内容的交互还得通过输入输出流中转,致使文件读写操作颇为繁琐.因此,开发者通常得自己重新封装一个文件存取的工具类,以便在日常开发 ...
- Kotlin入门-文件读写操作
转 https://blog.csdn.net/aqi00/article/details/83241762 Java的文件处理用到了io库java.io,该库虽然功能强大,但是与文件内容的交互还得通 ...
- c语言文件读写操作总结
C语言文件读写操作总结 C语言文件操作 一.标准文件的读写 1.文件的打开 fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程 ...
- PHP文件读写操作之文件写入代码
在PHP网站开发中,存储数据通常有两种方式,一种以文本文件方式存储,比如txt文件,一种是以数据库方式存储,比如Mysql,相对于数据库存储,文件存储并没有什么优势,但是文件读写操作在基本的PHP开发 ...
随机推荐
- 关于JSON的那些事儿
JSON的那些事儿 曾经有一段时间,XML是互联网上传输结构化数据的事实标准,其突出特点是服务器与服务器间的通信.但是业内不少人认为XML过于繁琐.冗长,后面为了解决这个问题也出现了一些方案,但是由于 ...
- [Asp.net 5] Configuration-新一代的配置文件
微软新一代asp.net(vnext),也叫asp.net 5,开源代码都放在网址https://github.com/aspnet下. 本文介绍的是Configuration工程,下载路径为http ...
- python编码规范
python编码规范 文件及目录规范 文件保存为 utf-8 格式. 程序首行必须为编码声明:# -*- coding:utf-8 -*- 文件名全部小写. 代码风格 空格 设置用空格符替换TAB符. ...
- CSS3梅花三弄特效
效果预览:http://hovertree.com/texiao/js/22/ 效果图: 代码如下: <html> <head> <meta http-equiv=&qu ...
- ffmpeg实现dxva2硬件加速
这几天在做dxva2硬件加速,找不到什么资料,翻译了一下微软的两篇相关文档.这是第二篇,记录用ffmpeg实现dxva2. 第一篇翻译的Direct3D device manager,链接:http: ...
- (HDU 5558) 2015ACM/ICPC亚洲区合肥站---Alice's Classified Message(后缀数组)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5558 Problem Description Alice wants to send a classi ...
- PowerDesigner 15设置mysql主键自动增长及基数
PowerDesigner 15设置mysql主键自动增长及基数 1.双击标示图,打开table properties->columns, 如图点击图标Customize Columns an ...
- 19、ASP.NET MVC入门到精通——Unity
一.IOC介绍 IOC(Inversion of Control),中文译为控制反转,又称为“依赖注入”(DI =Dependence Injection) IOC的基本概念是:不创建对象,但是描述创 ...
- GJM : 中断被Socket.Accept阻塞的线程
原帖地址:http://blog.csdn.net/kingfox/article/details/7233350 原文作者:狐帝 刚刚学习C#,在编写一个网络通讯的程序的时候,遇到了点麻烦.监听代码 ...
- OData V4 系列 查询操作
OData 学习目录 对OData的操作,主要是查询,下面把相关的查询情况列出来,供参考学习,每个操作都有对应的截图,便于理解 默认查询 $expand 查询导航属性关系 ,查询Product相关的 ...