Java IO-file(读写查)字节流、字符流

使用字节流操作汉字或特殊的符号语言的时候,容易乱码,建议使用字符流.

先有字节流,后有字符流,字符流是对字节流的补充.

使用记事本打开某个文件,可以看到内容的就是文本文件,否则可以理解二进制.

一般的,操作二进制文件(图片,音频,视频等)必须使用字节流.

一般的,操作文本文件使用字符流.

如果不清楚是哪一类型文件,使用字节流.

-----------------------------------------字节流------------------------------------------

FileInputStream:     文件的字节输入流    例FileInputStream fis = new FileInputStream(srcPath);  //srcPath输入的文件地址(名字可以改)

FileOutputStream:  文件的字节输出流    例FileOutputStream fos = new FileOutputStream(destPath);  //destPath输出的文件地址(名字可以改)

例:看不懂可以看下面的代码

 1 public class CopyfileDemo {
 2 //    案例:复制拷贝文件
 3     public static void copyFile(String srcPath,String destPath){
 4         try {
 5             //输入      day14------>Java程序
 6             FileInputStream fis = new FileInputStream(srcPath);
 7
 8             //输出   Java程序-----> day002
 9             FileOutputStream fos = new FileOutputStream(destPath);
10
11             //以字节流形式传输的
12             byte[] b = new byte[1024];
13             while(fis.read(b) != -1){  //读
14                 fos.write(b); //写
15
16                 fos.flush();//刷新
17             }
18             fis.close();
19             fos.close();
20             System.out.println("结束了");
21
22         } catch (FileNotFoundException e) {
23             // TODO Auto-generated catch block
24             e.printStackTrace();
25         } catch (IOException e) {
26             // TODO Auto-generated catch block
27             e.printStackTrace();
28         }
29
30
31     }
32
33     public static void main(String[] args) {
34         copyFile("E:/javaAll/01javase/课堂笔记/Word文档/day14_IO.docx", "D:/file/day002.docx");
35     }
36
37 }

-----------------------------------------字符流------------------------------------------

文件的字符流:
FileWriter:构造方法:FileWriter fw = new FileWriter(String fileName);//创建字符输出流类对象和已存在的文件相关联。文件不存在的话,并创建。

如:FileWriter fw = new FileWriter("C:\\demo.txt");

      FileWriter fw = new FileWriter(String fileName,boolean append);//创建字符输出流类对象和已存在的文件相关联,并设置该该流对文件的操作是否为续写。

如:FileWriter fw = new FileWriter("C:\\demo.txt",ture); //表示在fw对文件再次写入时,会在该文件的结尾续写,并不会覆盖掉。

    主要方法: void write(String str)   //写入字符串。当执行完此方法后,字符数据还并没有写入到目的文件中去。此时字符数据会保存在缓冲区中。

          此时在使用刷新方法就可以使数据保存到目的文件中去。

           viod flush()                //刷新该流中的缓冲。将缓冲区中的字符数据保存到目的文件中去。

       viod close()               //关闭此流。在关闭前会先刷新此流的缓冲区。在关闭后,再写入或者刷新的话,会抛IOException异常。

FileReader:构造方法FileReader fr = new FileReader(String fileName);//使用带有指定文件的String参数的构造方法。创建该输入流对象。并关联源文件。

      主要方法:int read(); // 读取单个字符。返回作为整数读取的字符,如果已达到流末尾,则返回 -1。

            int read(char []cbuf);//将字符读入数组。返回读取的字符数。如果已经到达尾部,则返回-1。

            void close();//关闭此流对象。释放与之关联的所有资源。

FileWriter创建文件夹,并且插入文字

 1 public class FileWriterDemo {
 2     //"世界那么大,我想去看看"  ----->  D:/test.txt
 3     public static void main(String[] args) {
 4
 5         File file = new File("D:/test.txt");
 6         try {
 7             FileWriter fw = new FileWriter(file);
 8             fw.write("世界那么大,我想去看看");
 9             fw.flush();
10             fw.close();
11         } catch (IOException e) {
12             // TODO Auto-generated catch block
13             e.printStackTrace();
14         }
15
16         System.out.println("OK......");
17     }
18
19 }

FileReader获取文件夹(一行或多行)内容,并且打印。

 1 public class FileReaderDemo {
 2
 3     //D:/test.txt------>java程序中
 4     public static void main(String[] args) {
 5         File file = new File("D:/test.txt");
 6         try {
 7             FileReader fr = new FileReader(file);
 8             //获取文件的大小  数据字节流
 9             FileInputStream fis = new FileInputStream(file);
10             char[] cbuf = new char[fis.available()];
11             fr.read(cbuf);
12
13             //char数组---->字符串
14             String str = new String(cbuf);
15
16             System.out.println(str);
17
18         } catch (FileNotFoundException e) {
19             // TODO Auto-generated catch block
20             e.printStackTrace();
21         } catch (IOException e) {
22             // TODO Auto-generated catch block
23             e.printStackTrace();
24         }
25     }
26
27 }
时间: 2024-10-20 17:23:36

Java IO-file(读写查)字节流、字符流的相关文章

J2SE知识点归纳笔记(七)---Java IO Part 4:基本字符流

J2SE知识点归纳笔记(七)---Java IO Part 4:基本字符流                                                                 --转载请注明出处:coder-pig 本节引言: 上一节中,我们对于Java IO流中的一些基本字节流进行了学习,他们都是InputStream与 OutputStream的子类;本节学习的字符流则是Reader与Writer的子类,好了,话不多说, 开始本节内容! 本节正文: 1.Reade

IO-03字节流字符流

在程序中所有的数据都是以流的方式进行传输和保存的,程序需要数据的时候要使用输入流读取数据,而程序需要将一些数据保存起来则需要使用输出流来完成. 在JAVA.IO包中操作文件内容的主要有两大类:字节流,字符流,两类都分为输入和输出操作.在字节流中输出数据主要是使用OutputStream,输入主要使用InputStream,在字符流中输出主要使用Writer类完成,输入只要使用Reader类完成. 主要的操作流程如下: 使用FILE类打开一个文件 通过字节流或者字符流的子类,指定输出的位置. 进行

java IO文件读写例子(OutputStream,InputStream,Writer,Reader)

一,File创建文件 File file = new File("D:" + File.separator + "yi.txt"); 代码示例: package com.hbut.io; import java.io.File; import java.io.IOException; public class FileDemo { public static void main(String[] args) { File file = new File("

Android笔记:利用InputStream和BufferedReader 进行字节流 字符流处理

通过socket获取字节流处理时最初使用的是BufferedReader和PrintWriter  这种方式在解析字符串时是比较方便的 但是在处理字节时不够方便最终还是回归到InputStream和OutputStream方式 不使用缓存直接使用字节流操作,一次传输的字节数据在300字节以内,目前没有测试差距会有多大. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException;

Java IO: File

原文链接 作者: Jakob Jenkov 译者: 李璟([email protected]) Java IO API中的FIle类可以让你访问底层文件系统,通过File类,你可以做到以下几点: 检测文件是否存在 读取文件长度 重命名或移动文件 删除文件 检测某个路径是文件还是目录 读取目录中的文件列表 请注意:File只能访问文件以及文件系统的元数据.如果你想读写文件内容,需要使用FileInputStream.FileOutputStream或者RandomAccessFile.如果你正在使

java.io.File的基本使用以及关于Windows中大小写问题

package fengke.filedemo; import java.io.File;import java.io.IOException;/** * java.io.File的基本使用以及关于Windows中大小写问题 * @author 锋客 *   注意:文件创建的异常:默认路径与绝对路径的问题:多级目录的创建 *       掌握三种构造方法:不能用于文件内容的访问. * */ public class FileDemo {    /* File类只用于表示文件(目录)的信息(名称.

33.JAVA编程思想——JAVA IO File类

33.JAVA编程思想--JAVA IO File类 RandomAccessFile用于包括了已知长度记录的文件.以便我们能用 seek()从一条记录移至还有一条:然后读取或改动那些记录. 各记录的长度并不一定同样:仅仅要知道它们有多大以及置于文件何处就可以. 首先.我们有点难以相信RandomAccessFile 不属于InputStream 或者OutputStream 分层结构的一部分.除了恰巧实现了DataInput 以及DataOutput(这两者亦由 DataInputStream

利用java.io.File类实现遍历本地磁盘上指定盘符或文件夹的所有的文件

2016-11-18 这是本人的第一篇随笔博客,纠结了半天还是选择自己学的时候比较用心的一些知识点上.利用java.io.File类指定本地的文件夹进行遍历所有的文件. package org.lxm.filedemo; import java.io.File; import java.util.Scanner; /* * 本程序是将某个盘的所有文件夹及其文件全部调出来的操作 */ public class FileAllDemo { public static void main(String

IO:File类(java.io.File)

public class File extends Object implements Serializable, Comparable<File> 构造方法: public File(String pathname) 按照完整路径实例化 public File(File parent, String child) 按照父路径和文件名实例化 成员: public static final String separator 目录分隔符 ('\'.'/'等) public static final

如何判断java.io.File所读取的文件编码

如何判断java.io.File所读取的文件编码 问题 java中涉及到文件读取,就经常要考虑文件编码问题.虽然程序中一般都指定UTF-8编码,但是用户总可能提交各种编码的文件(特别是windows下用户),如果对这些文件不做判断就直接按照UTF-8的方式读取的话,是肯定会乱码的. 解决方案 java原生并不支持文件编码的判断,一般都是read文件的前几个字节来判断,需要自己编写工具类,判断的编码类型也比较少.最近找到了个开源的项目juniversalchardet,能比较优雅的完成这个任务.