Javafile⽂件的写⼊和读取及下载
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()){
}
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;
ubuntu进入vim后怎么输入try {
if(!f.exists()){
}
fos=new FileOutputStream(f);
String content="要写⼊的新内容!";
fos.Bytes());最简单的python编程入门指南
} catch (IOException e) {
e.printStackTrace();
}finally{
if(fos!=null){
try {
frequency是什么意思中文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((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((ad())!=-1){
//对于window下,\r\n这两个字符在⼀起时,表⽰⼀个换⾏。如何禁用javascript
//但是如果这两个字符分开显⽰时,会换两⾏。
//因此,屏蔽掉\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((adLine())!=null){
s+=temp;
}
}catch(Exception e){
e.printStackTrace();
}finally{
try {
narrationbr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println("file content:"+s);
return s;
}
四、随机读取⽂件中的部分内容: RandomAccessFile
//随机⾏读取⽂件
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个字节,则读剩下的⽂字。
//将⼀次读取的字节数赋给byteread
while((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();
}
}
}
/
java下载过程/System.out.println("⽂件内容:"+s);
return s;
}
补充的⽂件知识:
/**
* 显⽰输⼊流中还剩的字节数
*/
private static void showAvailableBytes(InputStream in) {
try {
System.out.println("当前字节输⼊流中的字节数为:" + in.available());
} catch (IOException e) {
e.printStackTrace();
}
}
⽂件的下载
// 在线打开⽅式下载
public void downLoad(String filePath, HttpServletResponse response,String fileNewName) throws Exception { File f = new File(filePath);
OutputStream out = OutputStream();
if (!f.exists()) {
response.setCharacterEncoding("UTF-8");
String notFileHtml=getNotFileHtml(filePath,"⽂件不到");
out.Bytes("UTF-8"));
out.flush();
return;
}
BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));
byte[] buf = new byte[1024];
int len = 0;
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition", "attachment; filename=" + fileNewName);
while ((len = br.read(buf)) > 0)
out.write(buf, 0, len);
br.close();
out.close();
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论