下面是小弟写的一个复制txt文档的程序,可是出问题了,帮忙看看先!
package com.myself.copy;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;public class Copy {
// public void copyFile(){
public static void main(String[] s) {
int i=0;
try {
InputStreamReader in = new InputStreamReader(new FileInputStream(
"D:\\360data\\重要数据\\我的文档\\文档\\TXT\\123.txt"));
OutputStreamWriter out = new OutputStreamWriter(
new FileOutputStream("D:\\360data\\重要数据\\我的文档\\文档\\TXT\\副本123.txt"));
while ((i = in.read())!=-1) {
out.write(i);
System.out.println("i");
}
} catch (FileNotFoundException e) {
System.out.println("文件或者文件夹没有找到!");
e.printStackTrace();
} catch (IOException e) {
System.out.println("读写异常!");
e.printStackTrace();
}
}
}
最后运行的结果是这样的:
在文件夹里找到了副本123.txt,可是打开之后里面什么都没有(我的123.txt里面有几百个中文汉字),然后我在out.write(i)下面加了一句System.out.println("i");打印出来的全部是一个数字比如(1211 1469 65533 65533 1123 65533...)等等,这个是为什么啊?能解释一下吗?
随便问一下,哪里有i/o流操作的视频啊,我在这个地方纠结了半天,可还是对流有点不懂,希望大虾们能给出小弟一个答案!谢谢了先!
package com.myself.copy;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;public class Copy {
// public void copyFile(){
public static void main(String[] s) {
int i=0;
try {
InputStreamReader in = new InputStreamReader(new FileInputStream(
"D:\\360data\\重要数据\\我的文档\\文档\\TXT\\123.txt"));
OutputStreamWriter out = new OutputStreamWriter(
new FileOutputStream("D:\\360data\\重要数据\\我的文档\\文档\\TXT\\副本123.txt"));
while ((i = in.read())!=-1) {
out.write(i);
System.out.println("i");
}
} catch (FileNotFoundException e) {
System.out.println("文件或者文件夹没有找到!");
e.printStackTrace();
} catch (IOException e) {
System.out.println("读写异常!");
e.printStackTrace();
}
}
}
最后运行的结果是这样的:
在文件夹里找到了副本123.txt,可是打开之后里面什么都没有(我的123.txt里面有几百个中文汉字),然后我在out.write(i)下面加了一句System.out.println("i");打印出来的全部是一个数字比如(1211 1469 65533 65533 1123 65533...)等等,这个是为什么啊?能解释一下吗?
随便问一下,哪里有i/o流操作的视频啊,我在这个地方纠结了半天,可还是对流有点不懂,希望大虾们能给出小弟一个答案!谢谢了先!
你流还在缓冲区中,不刷新不会出来的!
还有要记得out.close();关毕流,用完就不要占用资源了
close();在关闭流之前会先刷新,所以不用flush()也是可以的
read()方法读取到的单个字符都会根据Unicode转成相应的int型数据,范围是0 到 65535 之间
OutputStreamWriter out = new OutputStreamWriter(
new FileOutputStream("D:\\360data\\重要数据\\我的文档\\文档\\TXT\\副本123.txt"),"utf-8");OutputStreamWriter写入时记的转码
out.write(i);楼主只是为了写i而不是写内容?
可存储的设备你可以想成:硬盘,管道,网络,内存中的字符串,数组等等,
管道只是逻辑上的一个概念,不要深究,把他当做平常中的输油管道就行,输油管道不就是从A管道进,从B管道出,然后再进入C管道。
我这里说的可存储可以是永久存储,可以是暂时存储如内存,可以是虚拟中的存储,如管道。
数据:一个字符串,一张图片数据,程序中的对象,网络上发送的图片,声音,电影等等,都可以称为数据。
LZ不要被JAVA的各种流吓到了,其实都一个模式