黑马程序员技术交流社区
标题:
复制txt文件的一个小问题
[打印本页]
作者:
冯建鹏
时间:
2012-3-26 16:42
标题:
复制txt文件的一个小问题
//将C盘一个文本文件复制到D盘。
/*
复制的原理:
其实就是将C盘下的文件数据存储到D盘的一个文件中。
步骤:
1,在D盘创建一个文件。用于存储C盘文件中的数据。
2,定义读取流和C盘文件关联。
3,通过不断的读写完成数据存储。
4,关闭资源。
*/
import java.io.*;
class CopyText
{
public static void main(String[] args) throws IOException
{
copy_1();
}
//从C盘读一个字符,就往D盘写一个字符。
public static void copy_1()throws IOException
{
//创建目的地。
FileWriter fw = new FileWriter("RuntimeDemo_copy.txt");
//与已有文件关联。
FileReader fr = new FileReader("RuntimeDemo.java");
int ch = 0;
while((ch=fr.read())!=-1) {
fw.write(ch);
}
fw.close();
fr.close();
}
}
//
fr.read()方法返回的是数字,赋值给ch,然后代码块中的fw.write(ch)写进去的应该是数字吧,怎么就把那个文件里面的给复制到另一个文件里面了呢,我看了write方法但是里面也没写怎么个情况,就说传递的是 写入单个字符。要写入的字符包含在给定整数值的 16 个低位中,16 高位被忽略。
作者:
龚振 龚振 龚振
时间:
2012-3-26 17:06
我也在看这里,不过还没注意到这个问题呢。
fr.read()方法返回的是数字,赋值给ch,我看了下fw.write()方法接收的也是int型如下:
public void write(int c)
throws IOException写入单个字符。
覆盖:
类 Writer 中的 write
参数:
c - 指定要写入字符的 int。
因此是不是java底层给他们进行了相应的从字符到数字又从数字到字符的转化呢?
我也不太清楚,坐等高人专业解答吧。
作者:
冯建鹏
时间:
2012-3-26 17:23
klas2008 发表于 2012-3-26 17:06
我也在看这里,不过还没注意到这个问题呢。
fr.read()方法返回的是数字,赋值给ch,我看了下fw.write()方法 ...
嗯 我就是不明白那个write方法 传递进去的是int类型的就直接把原文件给输出了,是什么原理?内部强转?不清楚:'(
作者:
张开开
时间:
2012-3-26 18:05
write()写入的整数是字符编码,你直接写入整数ch也行,或者直接(char)ch转换成字符也行,虚拟机会识别并对需要转换的整数做转换动作,我是这么想的!
作者:
贠(yun)靖
时间:
2012-3-26 18:06
字符流 的读和写 都是基于字节流的 因为把数据存储在硬盘上最终存储的是字节码文件
而你用字符流读和取 内部会有一个转换的过程 把字节码文件转换成字符形式 所以说字符流是后来才出来了
read方法读取字符 返回的事这个字符在ascII码表中的字符对应的数字,比如a对应的事97
如果读到最后没有字符了返回-1 而你把read() 返回的数字赋值给ch 那么ch肯定是一个数字
write写的时候当然是一个数字了 要想让他输出时字符 把它强制转换一下即可 即 fw.write((char)ch)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2