一、FileWriter 和BufferedWriter 结合写入文件

  FileWriter是字符流写入字符到文件。默认情况下,它会使用新的内容代替文件原有的所有内容,但是,当指定一个true值作为FileWriter构造函数的第二个参数,它会保留现有的内容,并追加新内容在文件的末尾。

  BufferedWriter:缓冲字符,是一个字符流类来处理字符数据。不同于字节流(数据转换成字节FileOutPutStream),可以直接写字符串、数组或字符数据保存到文件。

默认情况,替换原有内容:   new FileWriter(file);

保留原来的文件内容:      new FileWriter(file,true
 
public static void writeInFileByfb() {
File f=new File("E:\\Java\\jmoa\\TestDiff\\src\\test\\resource\\test_fb.txt");
String content="要写入文件的新内容";
FileWriter fw=null;
BufferedWriter bw=null;
try{
if(!f.exists()){
f.createNewFile();
}
fw=new FileWriter(f.getAbsoluteFile(),true); //true表示可以追加新内容
//fw=new FileWriter(f.getAbsoluteFile()); //表示不追加
bw=new BufferedWriter(fw);
bw.write(content);
bw.close();
}catch(Exception e){
e.printStackTrace();
} }

二、FileOutPutStream 字节流写入文件

  文件输出流是一种用于处理原始二进制数据的字节流泪。 为了将数据写入到文件中,必须将数据转换为字节,并保存到文件。具体例子如下:

package com.joyplus.test;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException; public class FileOutPutTest {
public static void main(String[] args) {
FileOutPutTest.writeInFileByfi();
} public static void writeInFileByfi(){
File f=new File("E:\\Java\\jmoa\\TestDiff\\src\\test\\resource\\test_fi.txt");
FileOutputStream fos=null;
try {
if(!f.exists()){
f.createNewFile();
}
fos=new FileOutputStream(f);
String content="要写入的新内容!";
fos.write(content.getBytes());
} catch (IOException e) {
e.printStackTrace();
}finally{
if(fos!=null){
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} }
}

三、RandomAccessFile 写入文件

   RandomAccessFile的唯一父类是Object,与其他流父类不同。是用来访问那些保存数据记录的文件的,这样你就可以用seek( )方法来访问记录,并进行读写了。这些记录的大小不必相同;但是其大小和位置必须是可知的.

   如下例子是RandomAccessFile如何进行写入文件的例子:

public static void writeInFileByRdA(){
String content="randowAccessFile";
try{
// 打开一个随机访问文件流,按读写方式
RandomAccessFile randomFile = new RandomAccessFile("E:\\Java\\jmoa\\TestDiff\\src\\test\\resource\\test_fb.txt", "rw");
// 文件长度,字节数
long fileLength = randomFile.length();
//将写文件指针移到文件尾。
randomFile.seek(fileLength);
randomFile.writeBytes(content);
randomFile.close();
}catch(Exception e){
e.printStackTrace();
}
}

文件的读取

  一、FileInputStream 字节流读取文件 【注意:读取中文的时候会乱码】

具体代码如下:

//按照字节读取文件内容
public static String readFileByByte(){
String s="";
File f=new File("E:\\Java\\jmoa\\TestDiff\\src\\test\\resource\\test_fb.txt");
InputStream in=null;
try{
in=new FileInputStream(f);
int tempByte;
while((tempByte=in.read())!=-1){
System.out.println(tempByte);
s+=tempByte;
}
in.close();
}catch(Exception e){
e.printStackTrace();
}
System.out.println("content:"+s);
return s;
}

二、InputStreamReader 字符流读取文件内容

//按照字符读取文件内容
public static String readFileByChar(){
String s="";
File f=new File("E:\\Java\\jmoa\\TestDiff\\src\\test\\resource\\test_fb.txt");
Reader rdr=null;
try{
rdr=new InputStreamReader(new FileInputStream(f));
int temp;
while((temp=rdr.read())!=-1){
//对于window下,\r\n这两个字符在一起时,表示一个换行。
//但是如果这两个字符分开显示时,会换两行。
//因此,屏蔽掉\r,或者屏蔽掉\n。否则,将会出现很多空行
if(((char)temp)!='\r'){
s+=(char)temp;
}
}
}catch(Exception e){
e.printStackTrace();
}finally{
try {
rdr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println(s);
return s;
}

三、BufferedReader 以行为单位读取文件内容

//按照行读取文件
public static String readFileByLine(){
String s="";
File f=new File("E:\\Java\\jmoa\\TestDiff\\src\\test\\resource\\test_fb.txt");
BufferedReader br=null;
try{
System.out.println("按照行读取文件内容");
br=new BufferedReader(new FileReader(f));
String temp;
while((temp=br.readLine())!=null){
s+=temp;
}
}catch(Exception e){
e.printStackTrace();
}finally{
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println("file content:"+s);
return s;
}
//随机行读取文件
public static String readFileByRand(){
String s="";
File f=new File("E:\\Java\\jmoa\\TestDiff\\src\\test\\resource\\test_fb.txt");
RandomAccessFile raf=null;
try{
//打开一个文件流, 按只读方式
raf=new RandomAccessFile(f.getName(), "r");
//文件长度,字节数
long fileLength=raf.length();
//读文件的起始位置
int beginIndex=(fileLength>4)?4:0;
//将读文件的开始位置移到beginIndex位置
raf.seek(beginIndex);
byte[] bytes=new byte[10];
int byteread=0;
//一次读10个字节,如果文件内容不足10个字节,则读剩下的文字。
//将一次读取的字节数赋给byteread
while((byteread=raf.read(bytes))!=-1){
System.out.write(bytes,0,byteread);
} }catch(Exception e){
e.printStackTrace();
}finally{
if(raf!=null){
try {
raf.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//System.out.println("文件内容:"+s);
return s;
}

补充的文件知识:

 /**
* 显示输入流中还剩的字节数
*/
private static void showAvailableBytes(InputStream in) {
try {
System.out.println("当前字节输入流中的字节数为:" + in.available());
} catch (IOException e) {
e.printStackTrace();
}
}

Java IO file文件的写入和读取及下载的更多相关文章

  1. Java file文件的写入和读取及下载

    File文件的写入 一.FileWriter 和BufferedWriter 结合写入文件 FileWriter是字符流写入字符到文件.默认情况下,它会使用新的内容代替文件原有的所有内容,但是,当指定 ...

  2. IO流-文件的写入和读取

    1.文件写入 类: FileWriter继承自Writer(字符流基类之一,另外一个为Reader) 方法: writer(参数); 根据参数可以写入字符.字符数组.字符数组中的一部分.整型.字符串. ...

  3. java的bio和nio写入及读取txt文件

    一.bio的写入及读取 1.采用bio之BufferedWriter 写入文件 public static void main(String[] args) throws IOException { ...

  4. JAVA 创建TXT文件,写入文件内容,读取文件内容

    [java]  view plain copy   package com.abin.facade.ws.mail.function; import java.io.BufferedReader; i ...

  5. java获取指定路径下的指定文件/java.io.File.listFiles(FilenameFilter filter)

    java.io.File.listFiles(FilenameFilter filter) 返回抽象路径名数组,表示在目录中此抽象路径名表示,满足指定过滤器的文件和目录. 声明 以下是java.io. ...

  6. 【java】文件操作java.io.File

    package 文件操作; import java.io.File; import java.io.IOException; public class TestFile { public static ...

  7. [java]借助java.io.File类,完成文件批量改名

    列出某目录下的所有文件,将文件改名,借助java.io.File一个类就可以完成.大家可以发现,代码中的具体方法都是File一个类的. 另外要注意的是,File的全路径名,路径是一致的,父路径其实是文 ...

  8. java(IO)读写文件乱码转换UTF-8问题

    java(IO)读写文件乱码转换UTF-8问题 读取文件 String Content = ""; // 文件很长的话建议使用StringBuffer try { FileInpu ...

  9. Java IO编程——文件拷贝

    在操作系统里面有一个copy命令,这个命令的主要功能是可以实现文件的拷贝处理,现在要求模拟这个命令,通过初始化参数输入拷贝的源文件路径与拷贝的目标路径实现文件的拷贝处理. 需求分析: ·需要实现文件的 ...

随机推荐

  1. jquery操作select(option)的取值,设置和选中

    比如 <select class="selector"> <option value ="volvo">Volvo</option ...

  2. C# in查询

    一.前言 在做项目中,我们会经常使用到 in 查询语句.那么如果我们用 EF 和 Linq 怎么写?接下来看代码 二.实例 我使用的是区域查询的例子,基本的 sql 语句如下: SELECT * FR ...

  3. 算法学习--Day8

    今天重拾算法复习. 今天学习了两个类型的算法——并查集与最小生成树(MST) 简单记录一下并查集的大致内容. 一.并查集的内容大致作用为查找当前图中的点有几个集合. 该算法起到查询分组的情况.通过给定 ...

  4. WPF Set connectionId threw an exception异常 以及重复dll的问题

    1.DataOutputWPF 在显示norlib.Basic.UserConfigControl时 抛出异常 xmlparsingException : WPF Set connectionId t ...

  5. 调用Web API将文件上传到服务器的方法(.Net Core)

    最近遇到一个将Excel通过Web API存到服务器的问题,其中涉及到Excel的读取.调用API.Web  API怎么进行接收. 一. Excel的读取.调用API Excel读取以及调用API的代 ...

  6. 笔记-JavaWeb学习之旅11

    请求转发:一种在服务器内部的资源跳转方式 使用步骤 1.通过request对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path) ...

  7. mac 终端查看端口命令

    查看 端口所在线程 lsof -i:8080 mac-abeen:spider abeen$ lsof -i:8080 COMMAND PID USER FD TYPE DEVICE SIZE/OFF ...

  8. 持续集成~Jenkins里的powershell插件发布远程站点了

    通过添加powershell插件后,使用它强大的windows系统命令,就把发布好的程序包推送到具体的应用服务器了. 系统管理-插件管理-powershell 把它安装,重启jenkins,然后修改你 ...

  9. js判断网页访问设备类型

    有时候我们会需要来根据不同的设备访问进行不同的操作,在网上找了一下,主要是根据Navigator对象, if(/Android|Windows Phone|webOS|iPhone|iPod|Blac ...

  10. Javaoo学习数组