import java.io.BufferedReaderimport java.io.Fileimport java.io.FileInputStreamimport java.io.FileNotFoundExceptionimport java.io.FileOutputStreamimport java.io.FileWriterimport java.io.IOExceptionimport java.io.InputStreamimport java.io.InputStreamReader/** * java读写文件,复制文件 * 读取d:/1.txt文件内容,写入f:/text.txt文件中. * @author young * */public class FileWriterTest {// 读写文件public static void rwFile(){FileWriter fw = null BufferedReader br = null try {fw = new FileWriter("f:\\text.txt", true) br = new BufferedReader(new InputStreamReader(new FileInputStream("d:\\1.txt"), "UTF-8")) String line = null while ((line = br.readLine()) != null) {System.out.println("文件内容: " + line) fw.write(line) fw.flush() }br.close() } catch (FileNotFoundException e) {e.printStackTrace() } catch (IOException e) {e.printStackTrace() } finally {if (fw != null) {try {fw.close() } catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace() }}}} public static void main(String[] args) {rwFile() }}
首先在D盘新建文件1.txt,输入任意内容。然后执行java代码即可。
import java.io.BufferedReaderimport java.io.File
import java.io.FileReader
import java.io.FileWriter
import java.io.IOException
public class FileCopy {
static final String fromeFile = "c:\\test1.txt"
static final String toFile = "c:\\test2.txt"
public static void main(String args[]) {
try {
BufferedReader read = new BufferedReader(new FileReader(new File(fromeFile)))
FileWriter write = new FileWriter(new File(toFile), true)
String temp
while((temp = read.readLine())!=null){
write.write(temp)
}
write.close()
read.close()
System.out.println("内容已从"+fromeFile+"复制追加到"+toFile)
} catch (IOException e) {
e.printStackTrace()
}
}
}
造成乱码有很多的原因:比如文件编码等
读取是用的带缓冲区的字符流 BufferedReader 这是按字符读入
写入磁盘是的是字节流 FileOutputStream 这是按字节写出
解决办法,配套使用,字符流和字节流
一:下面使用字节流复制文本
import java.io.Fileimport java.io.FileInputStream
import java.io.FileOutputStream
public class Demo {
public static void main(String[] args) throws Exception {
File file = new File("c:\\123.txt")
FileOutputStream fos = new FileOutputStream(new File("C:\\123COPY.txt"))
FileInputStream br = new FileInputStream(file)
int len
while((len=br.read())!=-1){
fos.write(len)
}
br.close()
fos.close()
}
}
二:下面使用字符流复制文本
import java.io.BufferedReaderimport java.io.BufferedWriter
import java.io.File
import java.io.FileReader
import java.io.FileWriter
public class Demo2 {
public static void main(String[] args) throws Exception {
File file = new File("c:\\123.txt")
BufferedReader br = new BufferedReader(new FileReader(file))
BufferedWriter bw = new BufferedWriter(new FileWriter(new File("c:\\123copy.txt")))
//使用BufferedReader的时候,按照习惯,一般不会使用br.read()方法,
//大家最喜欢用BufferedReader,因为他每次可以读取一行,非常方便
String temp
while((temp=br.readLine())!=null){
bw.write(temp)//每次写入一行.
bw.newLine()//并且进行换行
}
br.close()
bw.close()
}
}