昨天看了段视频,突然发现自己对inputstream的read方法和outputstream的write方法在使用上还是不是很明白,早上来做了个测试,具体情况如下:
第一个例子写法如下:
public static void main(String[] args) {
try {
FileInputStream fis = new FileInputStream("e:/linux.txt");
FileOutputStream fos = new FileOutputStream("e:/test.txt");
byte[] b = new byte[1024];
int i = 0;
try {
while (fis.read(b) != -1) {
fos.write(b);
i++;
System.out.println("第" + i + "次输出:" + new String(b).toString());
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
fis.read(b)方法会每次在fis中读取b.length个长度的字符到b中,然后用fos.write(b)方法将b中的内容写入到fos流中;测试结果是,发现e:/test.txt文件中的内容与e:/linux.txt中的内容大部分是相同的,只有最后结尾的时候多出了一些乱码,这些乱码是哪儿来的呢?后来又写了下面的一个例子:
public static void main(String[] args) {
try {
FileInputStream fis = new FileInputStream("e:/linux.txt");
FileOutputStream fos = new FileOutputStream("e:/test.txt");
byte[] b = new byte[1024];
try {
int length = 0;
while ((length = fis.read(b)) != -1) {
System.out.println(length);
fos.write(b, 0, length);
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
运行结果显示:e:/test.txt文件中的内容与e:/linux.txt中的内容完全相同;后来对比了两种写法,发现第一种写法是有问题的,问题在于,如果读取的内容没有1024个字节,则写入到fos中还是以1024字节写入的,后面多余的是一些垃圾字节(不知道是什么数据)也会写入。
分享到:
相关推荐
FileInputStream和FileoutputStream的使用语法和实例
通过FileInputStream和FileOutputStream复制图片等非文本文件 通过FileInputStream和FileOutputStream复制图片等非文本文件 通过FileInputStream和FileOutputStream复制图片等非文本文件
FileInputStream 是文件输入流,它继承于InputStream。 通常,我们使用FileInputStream从某个文件中获得输入字节。 FileOutputStream 是文件输出流,它继承于OutputStream。 通常,我们使用FileOutputStream 将数据...
【IT十八掌徐培成】Java基础第13天-04.字节流-FileInputStream-FileOutputStream.zip
File read write FileInputStream FileOutputStream 简单示例
Java中FileInputStream FileOutputStream 实现文件复制
FileInputStream 是文件输入流,它继承于InputStream。FileOutputStream 是文件输出流,它继承于OutputStream。接下来通过本文给大家介绍Java中的FileInputStream 和 FileOutputStream,需要的朋友可以参考下
操作方式与普通java相似,即打开一个FileInputStream/FileOutPutStream,转成InputStream/outPutStream 然后读/写字节. SharedPrefreence主要用来存储简单数据类型. 不能存文件也不适合,比如QQ第一次登陆后可以保存...
Condition) ,读写锁(ReadWriteLock)线程等待锁(CountDownLatch,Barrier)基本数据类型的原子操作(AtomicBoolean,AtomicInteger等)文件读取/写入类(FileInputStream/FileOutputStream类)文件节点读取类
主要介绍了Android 数据存储之 FileInputStream 工具类及FileInputStream类的使用的相关资料,需要的朋友可以参考下
java编程,使用FileInputStream ,FileOutputStream 实现了把一个文件的内容复制到另外一个文件 /* * 多种类型文件的复制 */
Java I/O 流代码实例大全(01~09) File、FileInputStream、FileOutputStream、FileReader、FileWriter、BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter
// in = new FileInputStream("D:/lileihanmeimei.mp3"); // out = new FileOutputStream("E:/t98.mp3"); // //操作流 法一 //// int b = 0; //// while((b = in.read()) != -1){ //// out.write(b); /...
这是基于 Naoki Shibata ( ) 的 SSRC - 高质量音频采样率转换器 最初的 SSRC 转换器是用 C 编写的,主要用于处理文件。 这个库最初是作为 C 代码的直接 Java 端口,用 InputStream/OutputStream 替换文件 I/O,但...
javaIO经典案例,inputStream、outputStream、fileInputStream、fileOutputStream、管道流等经典案例
FileInputStream fis = new FileInputStream( f ); byte[] bytes = new byte[fis.available()]; fis.read(bytes); fis.close(); // 生成字符串 String imgStr = byte2hex( bytes ); System.out....
电器商城 运用File类进行文件操作 理解流,标准输入/输出流的概念 运用FileInputStream和FileOutputStream类读写文本文件-字节
FileInputStream和FileOutputStream BufferedInputStream 和 BufferedOutputStream DataInputStream 和 DataOutputStream ObjectInputStream和ObjectOutputStream PrintStream PushbackInputStream
FileInputStream的用法1---马克-to-win java视频文件输入流
运用File类进行文件操作 理解流,标准输入/输出...运用FileInputStream和FileOutputStream类读写文本文件 运用BufferedReader和BufferedWriter类读写文本文件 运用DataInputStream和DataOutputStream类 读写二进制文件