java io里关于FileReader和FileWriter的操作问题
发布网友
发布时间:2023-09-17 22:08
我来回答
共1个回答
热心网友
时间:2024-12-02 12:59
我知道你遇到乱码问题了,乱码问题是由于写入读取时所用的编码不一致,以及文件本身的编码导致的,这个参考程序你自己学习下,是我特意做的希望可以帮到你!
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.nio.channels.FileChannel;
import java.nio.ByteBuffer;
public class Test{
public static void main(String[] args) throws Exception {
//创建2个文件
File file1 = new File("D://test1.txt");
File file2 = new File("d://test2.txt");
file1.createNewFile();
file2.createNewFile();
//从键盘输入的字符写入test1.txt
FileWriter fout = new FileWriter(file1);
String str=null;
System.out.println("Please input a String:");
BufferedReader fin = new BufferedReader(new InputStreamReader(System.in));
str = fin.readLine();
System.out.println(str);
fout.write(str,0,str.length());
fout.flush();
fout.close();
fin.close();
//复制文件test1.txt的内容到test2.txt
//为了让你明白通道所以我这里用了2种读写入文件的方法
new Exam2().copy("D://test1.txt", "d://test2.txt");
}
/**
* 复制文件封装类
* @param url1
* @param url2
* @throws Exception
*/
public void copy(String url1, String url2) throws Exception {
FileInputStream input = new FileInputStream(url1);
FileChannel filechannel = input.getChannel();
FileOutputStream output = new FileOutputStream(url2);
FileChannel filechannel2 = output.getChannel();
ByteBuffer buf = ByteBuffer.allocate(1024 * 8);
while (filechannel.read(buf) != -1) {
buf.flip();
filechannel2.write(buf);
buf.clear();
}
input.close();
filechannel.close();
output.close();
filechannel2.close();
}
}
您的进步是我最大的动力,如果你觉得我回答的合理的话,请给我多加分。谢谢,如果不明白的话,请给我留言。大家相互学习啊! 加油!