file的使用
-
文件流的使用
-
FileInpunStream FileOutOputStream ----------字符流
-
FileReader Filewriter --------字节流
如下代码读取文件的内容并将其输入显示器上
package com.nanjing.file; import java.io.FileReader; public class TestFileReader { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub FileReader fr=null; try { fr=new FileReader("d:/2.txt"); int cnt=0; int ch; while(-1!=(ch=fr.read())){ System.out.print((char)ch); ++cnt; } System.out.printf("总共从1.txt中读取了%d个字节",cnt); } catch (Exception e) { throw new RuntimeException(e); } } }package com.nanjing.file; import java.io.FileInputStream; import java.io.InputStream; public class TestFileInputStreamr { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub InputStream fr=null; try { fr=new FileInputStream("d:/2.txt"); int cnt=0; int ch; while(-1!=(ch=fr.read())){ System.out.print((char)ch); ++cnt; } System.out.printf("总共从1.txt中读取了%d个字节",cnt); } catch (Exception e) { throw new RuntimeException(e); } } }
- InputStream 和 OutputStream
1. FileInpunStream是InputStream的子类,因为InputStream是一个抽象类。对是一个抽象类,我们要使用他的子类来new 对象,当然我们也可以这样
Reader fr=null;父类的引用指向子类的对象。
2. FileInpuntStream将文件按字节读取,所以即使有汉字会乱码。
3. public FileInpunStream(String FileName)一个常用函数,就是连接文件的函数。
4. FileOutputStream同理
5. / \ 在字符串里面使用
- Reader 和 Writer
1.FileReader是Reader的子类与上面基本相似
2.FileReader是将文件按字符为单位所以不会乱码。
3.public FileReader(String FileName)
4.Writer类似
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
上面二者的区别???
InputStream 和 OutputStream VS Reader 和 Writer
- InputStream 和 OutputStream 可以完成所以格式文件的copy
- Reader 和 Writer只能完成文本文件的copy
- 汉字乱码问题
import java.io.*; public class TestFileInputStreamOutputStreamCopy { public static void main(String[] args) { FileInputStream fi = null; FileOutputStream fo = null; try { fi = new FileInputStream("E:\综艺\歌曲\1.mp3"); fo = new FileOutputStream("d:/share/Output.txt"); //可以用QQ音乐打开,成功了 int ch; while (-1 != (ch=fi.read())) { fo.write(ch); } } catch (FileNotFoundException e) { System.out.println("文件没有找到!"); System.exit(-1); } catch(IOException e) { System.out.println("文件读写错误!"); System.exit(-1); } finally { try { if (null != fi) { fi.close(); fi = null; } if (null != fo) { fo.close(); fo = null; } } catch (Exception e) { e.printStackTrace(); System.exit(-1); } } System.out.println("文件复制成功!"); } }
import java.io.*; public class TestFileReaderWriterCopy { public static void main(String[] args) { FileReader fi = null; FileWriter fo = null; try { fi = new FileReader("E:\综艺\歌曲\1.mp3"); fo = new FileWriter("d:/share/Output.txt"); //Output.txt用QQ音乐打开失败! 本程序证明了FileWriter 和 FileReader 无法完成视频文件的赋值,实际上FileWriter 和 FileReader 只能完成文本文件的复制 int ch; while (-1 != (ch=fi.read())) { fo.write(ch); } } catch (FileNotFoundException e) { System.out.println("文件没有找到!"); System.exit(-1); } catch(IOException e) { System.out.println("文件读写错误!"); System.exit(-1); } finally { try { if (null != fi) { fi.close(); fi = null; } if (null != fo) { fo.close(); fo = null; } } catch (Exception e) { e.printStackTrace(); System.exit(-1); } } System.out.println("文件复制成功!"); } }