Java读写文件的几种方式
自工作以后好久没有整理Java的基础知识了。趁有时间,整理一下Java文件操作的几种方式。无论哪种编程语言,文件读写操作时避免不了的一件事情,Java也不例外。Java读写文件一般是通过字节、字符和行三种方式来进行文件的操作。
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader; public class FileUtil { /**
* 按行读取文件
*/
public static void ReadFileByLine(String filename) {
File file = new File(filename);
InputStream is = null;
Reader reader = null;
BufferedReader bufferedReader = null;
try {
is = new FileInputStream(file);
reader = new InputStreamReader(is);
bufferedReader = new BufferedReader(reader);
String line = null;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
} } catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (null != bufferedReader)
bufferedReader.close();
if (null != reader)
reader.close();
if (null != is)
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} /**
* 按字节读取文件
*
* @param filename
*/
public static void ReadFileByBytes(String filename) {
File file = new File(filename);
InputStream is = null;
try {
is = new FileInputStream(file);
int index = 0;
while (-1 != (index = is.read())) {
System.out.write(index);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if (null != is)
is.close(); } catch (IOException e) {
e.printStackTrace();
}
}
System.out.println("-----------------------------------");
try {
is = new FileInputStream(file);
byte[] tempbyte = new byte[1000];
int index = 0;
while (-1 != (index = is.read(tempbyte))) {
System.out.write(tempbyte, 0, index);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if (null != is)
is.close(); } catch (IOException e) {
e.printStackTrace();
}
}
} /**
* 按字符读取文件
*
* @param filename
*/
public static void ReadFileByChar(String filename) {
File file = new File(filename);
InputStream is = null;
Reader isr = null;
try {
is = new FileInputStream(file);
isr = new InputStreamReader(is);
int index = 0;
while (-1 != (index = isr.read())) {
System.out.print((char) index);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (null != is)
is.close();
if (null != isr)
isr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} /**
* 通过OutputStreamWriter写文件
*
* @param filename
*/
public static void Write2FileByOutputStream(String filename) {
File file = new File(filename);
FileOutputStream fos = null;
// BufferedOutputStream bos = null;
OutputStreamWriter osw = null;
try {
if (!file.exists()) {
file.createNewFile();
}
fos = new FileOutputStream(file);
osw = new OutputStreamWriter(fos);
osw.write("Write2FileByOutputStream");
// bos = new BufferedOutputStream(fos);
// bos.write("Write2FileByOutputStream".getBytes());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (null != osw) {
try {
osw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != fos) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} /**
* 通过BufferedWriter写文件
*
* @param filename
*/
public static void Write2FileByBuffered(String filename) {
File file = new File(filename);
FileOutputStream fos = null;
OutputStreamWriter osw = null;
BufferedWriter bw = null;
try {
if (!file.exists()) {
file.createNewFile();
}
fos = new FileOutputStream(file);
osw = new OutputStreamWriter(fos);
bw = new BufferedWriter(osw);
bw.write("Write2FileByBuffered");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (null != bw) {
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != osw) {
try {
osw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != fos) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} /**
* 通过FileWriter写文件
*
* @param filename
*/
public static void Write2FileByFileWriter(String filename) {
File file = new File(filename);
FileWriter fw = null;
try {
if (!file.exists()) {
file.createNewFile();
}
fw = new FileWriter(file);
fw.write("Write2FileByFileWriter");
} catch (IOException e) {
e.printStackTrace();
} finally {
if (null != fw) {
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} public static void main(String[] args) {
String filename = "D:/testfile.txt";
// ReadFileByLine(filename);
// ReadFileByBytes(filename);
// ReadFileByChar(filename);
String writeFile = "javawrite2file.txt";
// Write2FileByOutputStream(writeFile);
// Write2FileByBuffered(writeFile);
Write2FileByFileWriter(writeFile);
}
}
Java读写文件的大体情况应该就上面的几种方式,然而从效率的角度来讲。InputStream、OutputStream的效率比BufferedInputStream、BufferedOutputStream的效率要差,至于Reader、Writer没做进一步的比较。网上看到一些资料说Java.nio的效率最高,没有进一步做比较,不得而知了,等有时间再做进一步测试吧。
Java读写文件的几种方式的更多相关文章
- 【文件下载】Java下载文件的几种方式
[文件下载]Java下载文件的几种方式 摘自:https://www.cnblogs.com/sunny3096/p/8204291.html 1.以流的方式下载. public HttpServl ...
- Python读写文件的几种方式
一.pandas pandas模块是数据分析的大杀器,它使得对于文件相关的操作变得简单. 看一下它的简单使用 import pandas as pd # 读取 df = pd.read_csv('al ...
- android 随手记 读写文件的几种方式
java中多种方式读文件 一.多种方式读文件内容. 1.按字节读取文件内容 2.按字符读取文件内容 3.按行读取文件内容 4.随机读取文件内容 */ import java.io.BufferedRe ...
- Java读取文件的几种方式
package com.mesopotamia.test; import java.io.BufferedReader; import java.io.ByteArrayInputStream; im ...
- delphi之读写文件的三种方式
一.Tstrings.Tstringlist procedure TForm1.Button2Click(Sender: TObject); var strlist: TStringList; pat ...
- golang读写文件的几种方式
golang中处理文件有很多种方式,下面我们来看看. (1)使用os模块 先来看看如何查看文件属性 package main import ( "fmt" "os&quo ...
- java追加文件的几种方式
import java.io.BufferedWriter; import java.io.FileOutputStream; import java.io.FileWriter; import ja ...
- java复制文件的4种方式
尽管Java提供了一个可以处理文件的IO操作类.但是没有一个复制文件的方法.复制文件是一个重要的操作,当你的程序必须处理很多文件相关的时候.然而有几种方法可以进行Java文件复制操作,下面列举出4中最 ...
- [JAVA]java复制文件的4种方式
尽管Java提供了一个可以处理文件的IO操作类. 但是没有一个复制文件的方法. 复制文件是一个重要的操作,当你的程序必须处理很多文件相关的时候. 然而有几种方法可以进行Java文件复制操作,下面列举出 ...
随机推荐
- Java异常-一般异常和运行时异常的区别
Java提供了两类主要的异常:runtime exception和checked exception.checked 异常也就是我们经常遇到的IO异常,以及SQL异常都是这种异常.对于这种异常, JA ...
- 用freemarker生产静态页面
FreeMarker概述 * FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 * Template + data model = output ...
- jQuery 文本编辑器插件 HtmlBox 使用
0.htmlbox下载地址:http://download.csdn.net/detail/leixiaohua1020/6376479 1.引入头文件 <script src="li ...
- 无线安全: 通过伪AP进行DHCP+DNS劫持的钓鱼攻击
有了之前学习802.11的数据帧格式.芯片硬件参数学习的基础后,我们接下来继续学习无线安全中黑客是怎样进行流量劫持攻击的 相关学习资料 http://www.freebuf.com/articles/ ...
- Laravel教程 八:queryScope 和 setAttribute
Laravel教程 八:queryScope 和 setAttribute 此文章为原创文章,未经同意,禁止转载. Laravel Eloquent Database 直接就是按照上一节所说的那样,我 ...
- 织梦DedeCms网站更换域名后文章图片路径批量修改
因为织梦上传图片用的是绝对地址,如果域名更换后,之前发布的文章的图片URL是不会跟着改变的,所以我们需要把旧域名替换成新的域名,方法很简单,有一段SQL语句更新一下文章正文内容就行. 复制下面SQL语 ...
- 三角形变形记之纯css实现的分布导航条效果
三角形变形记,用纯css实现的分布导航条效果 <style type="text/css"> ul,li { list-style-type:none; font-si ...
- iOS exit(0); 直接退出程序
exit();
- 自定义NSLog无时间
#define SXLog(FORMAT, ...) fprintf(stderr,"file --\t%s\nline --\t%d\nmethd --\t%s\noutput --\t\ ...
- Unity3d三大光照渲染介绍
重要:在目前市面上常见的游戏引擎中,主要采用以下三种灯光实现方式: 顶点照明渲染路径细节 Vertex Lit Rendering Path Details 正向渲染路径细节 Forward Re ...