java文_java文件读写

本文介绍了Java中如何判断文件是否存在、打开文件并读取内容、将内容输出到控制台以及写入到另一个文件。强调了使用FileReader和FileWriter进行字符读写,并提供了追加方式写入文件的方法。同时,讨论了字符串比较的正确方式,避免使用`==`进行内容比较,推荐使用`equals()`方法。
摘要由CSDN通过智能技术生成

实现内容:打开文件并判断文件是否存在,如果存在就打开文件并把文件内容输出到控制台,之后把文件内容输出到另外一个文件

过程所需基础:

1、判断文件存不存在

String filePth= "D:\\bh\\key\\rsa_public_key.pem";

File file = new File(filePth);

if(!file.exists()){

// 文件不存在

throw new RuntimeException("文件不存在");

}

2、文件打开输入输出时需要捕捉异常

更多可见:https://www.runoob.com/java/java-exceptions.html

try{

file= newFileInputStream(fileName);

x= (byte) file.read();

}catch(IOException i) {

i.printStackTrace();return -1;

}

3、Java字符输出流

//(1)方法介绍://int read() * 读取单个字符//int read(char[] cbuf) * 将字符读入数组//abstract int read(char[] cbuf, int off, int len) * 将字符读入数组的某一部分。//代码实现:

importjava.io.FileReader;importjava.io.IOException;public classFileReaderDemo {public static void main(String[] args) throwsIOException{//TODO Auto-generated method stub

FileReader fr = new FileReader("d://input.txt");int hasRead = 0;while((hasRead = fr.read())!=-1){

System.out.print((char)hasRead);

}

fr.close();

}

}

4、Java字符输入流

//方法介绍://void write(int c):写入单个字符。//void write(String str):写入字符串。//void write(String str, int off, int len):写入字符串的某一部分。//void write(char[] cbuf):写入字符数组。//abstract void write(char[] cbuf, int off, int len):写入字符数组的某一部分。//代码实现:

importjava.io.FileWriter;importjava.io.IOException;public classFileWriterDemo {public static void main(String[] args) throwsIOException{//TODO Auto-generated method stub

FileWriter fw = new FileWriter("d://filewriter.txt");

fw.write("123");//必须要加fw.flush(),代表刷新,不加这个语句不能写入到文件中

fw.flush();

fw.close();

}

}

5、写入文件按照追加方式

FileWriter(String filename,boolean append)方法中

append参数指的是boolean的值,如果append的值是true,则将数据写入文件末尾处,而不是写入文件开始处。

6、不要使用==来判断两个字符串是否相等

java中字符串的比较:==

我们经常习惯性的写上if(str1==str2),这种写法在java中可能会带来问题

example1:

String a="abc";

String b="abc"

那么a==b将返回true。因为在java中字符串的值是不可改变的,相同的字符串在内存中只会存

一份,所以a和b指向的是同一个对象;

example2:

String a=new String("abc");

String b=new String("abc");

那么a==b将返回false,此时a和b指向不同的对象。

2、用equals方法比较的是字符串的内容是否相同

example:

String a=new String("abc");

String b=new String("abc");

a.equals(b);

众所周知,按照字符读写数据会导致有些文件不能读写失败(比如音频文件,你使用字符读写之后这个文件再按照音频格式就会打开失败)

按照字节读取数据可以读取所有文件,如果想要看字节读取数据可看:https://www.cnblogs.com/liuzengzhi/p/11826177.html

总代码:

import java.io.FileWriter;

import java.io.FileReader;

import java.io.File;

import java.io.IOException;

import java.util.Scanner;public classqmh {public staticString open_file(Scanner scan,File file)

{//E:/1.txt

System.out.println("请输入文件路径和名称:");

String s=scan.nextLine();

String suffix[]= s.split("\\.");

System.out.println(suffix[1]);/** java中字符串的比较:==

我们经常习惯性的写上if(str1==str2),这种写法在java中可能会带来问题

example1:

String a="abc";

String b="abc"

那么a==b将返回true。因为在java中字符串的值是不可改变的,相同的字符串在内存中只会存

一份,所以a和b指向的是同一个对象;

example2:

String a=new String("abc");

String b=new String("abc");

那么a==b将返回false,此时a和b指向不同的对象。

2、用equals方法比较的是字符串的内容是否相同

example:

String a=new String("abc");

String b=new String("abc");

a.equals(b);

**/

if(suffix[1].equals("txt"));else{

System.out.println("文件后缀名输入错误!");return "";

}try{

file= newFile(s);if (!file.exists()) {

System.out.println("找不到文件!");return "";

}else{

System.out.println("打开文件成功!");returns;

}

}catch(Exception i){

i.printStackTrace();

}return "";

}public static voidfile_input(FileReader fr,FileWriter fw,String os)

{int hasRead = 0;try{

fr= newFileReader(os);while((hasRead = fr.read())!=-1){

System.out.print((char)hasRead);

file_output(fw,(char)hasRead);

}

fr.close();

}catch(IOException i) {

i.printStackTrace();

}

}public static void file_output(FileWriter fw,chars)

{try{

fw= new FileWriter("E://2.txt",true);

fw.write(s);//必须要加fw.flush(),代表刷新,不加这个语句不能写入到文件中

fw.flush();

fw.close();

}catch(IOException i) {

i.printStackTrace();

}

}public static voidmain(String args[]) {

Scanner scan= new Scanner(System.in);

FileReader fr=null;

FileWriter fw=null;

File file=null;

String os;

os=open_file(scan,file);if(os!="") {

file_input(fr,fw,os);

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值