实现内容:打开文件并判断文件是否存在,如果存在就打开文件并把文件内容输出到控制台,之后把文件内容输出到另外一个文件
过程所需基础:
1、判断文件存不存在
File file = new File("/home/log/log.txt"); if (!file.getParentFile().exists()) { file.getParentFile().mkdirs(); } File file = new File("/home/log/log.txt"); if (!file.exists()) { file.createNewFile(); }
2、文件打开输入输出时需要捕捉异常
更多可见:https://www.runoob.com/java/java-exceptions.html
try { file = new FileInputStream(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) * 将字符读入数组的某一部分。 // 代码实现: import java.io.FileReader; import java.io.IOException; public class FileReaderDemo { public static void main(String[] args) throws IOException{ // 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):写入字符数组的某一部分。 //代码实现: import java.io.FileWriter; import java.io.IOException; public class FileWriterDemo { public static void main(String[] args) throws IOException{ // 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,则将数据写入文件末尾处,而不是写入文件开始处。
众所周知,按照字符读写数据会导致有些文件不能读写失败(比如音频文件,你使用字符读写之后这个文件再按照音频格式就会打开失败)
按照字节读取数据可以读取所有文件,如果想要看字节读取数据可看: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 class qmh { public static String open_file(Scanner scan,File file) { //C:/1.txt System.out.println("请输入文件路径和名称:"); String s = scan.nextLine(); file = new File(s); if (!file.getParentFile().exists()) { System.out.println("找不到文件!"); file.getParentFile().mkdirs(); return ""; } else { System.out.println("打开文件成功!"); return s; } } public static void file_input(FileReader fr,FileWriter fw,String os) { int hasRead = 0; try { fr = new FileReader(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,char s) { try { fw = new FileWriter("C://2.txt",true); fw.write(s); //必须要加fw.flush(),代表刷新,不加这个语句不能写入到文件中 fw.flush(); fw.close(); }catch(IOException i) { i.printStackTrace(); } } public static void main(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); } // String Str = new String("去问驱蚊器为"); // // System.out.print("返回值 :" ); // System.out.println(Str.replace('去', '啦')); // // System.out.print("返回值 :" ); // System.out.println(Str.replace('问', '喜')); } }