java文件读写

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

 

过程所需基础:

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('问', '喜'));
    }
}

 

上一篇:单片机程序HEX文件中加入固件版本信息


下一篇:QQ互联登录 微博登录问题