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

阅读: 评论:0

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

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

一、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\");String content="要写入文件的新内容";FileWriter fw=null;BufferedWriter bw=null;try{if(!f.exists()){f.createNewFile();}fw=new AbsoluteFile(),true);  //true表示可以追加新内容  //fw=new AbsoluteFile()); //表示不追加bw=new BufferedWriter(fw);bw.write(content);bw.close();}catch(Exception e){e.printStackTrace();}}

二、FileOutPutStream 字节流写入文件

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

package st;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\");FileOutputStream fos=null;try {if(!f.exists()){f.createNewFile();}fos=new FileOutputStream(f);String content="要写入的新内容!";fos.Bytes());} 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\", "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\");InputStream in=null;try{in=new FileInputStream(f);int tempByte;while((tempByte&#ad())!=-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\");Reader rdr=null;try{rdr=new InputStreamReader(new FileInputStream(f));int temp;while((temp&#ad())!=-1){//对于window下,rn这两个字符在一起时,表示一个换行。   //但是如果这两个字符分开显示时,会换两行。//因此,屏蔽掉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\");BufferedReader br=null;try{System.out.println("按照行读取文件内容");br=new BufferedReader(new FileReader(f));String temp;while((temp&#adLine())!=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\");RandomAccessFile raf=null;try{//打开一个文件流, 按只读方式raf=new Name(), "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个字节,则读剩下的文字。//将一次读取的字节数赋给bytereadwhile((byteread&#ad(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();}}

 

转载于:.html

本文发布于:2024-01-28 19:47:07,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17064424329839.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:文件   Java   IO   file
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23