Java基础——IO流

来源:互联网 发布:淘宝上传营业执照步骤 编辑:程序博客网 时间:2024/06/01 19:07



所有的流中,简单概括一下,字符流是在使用的时候,会参照字符的码表,防止字符出现乱码。而字节流就是byte位,可以操作一些。

所有IO类,其命名可以看出其中的含义,前面是用处,后面是母类。

写入或者写出,是相对于内存而言的。


讲一下特殊的:

1) , 在IO中,File类可以直接操作文件。非常方便使用。

2) , 在使用的时候,经常使用缓冲类,也就是BufferedString,BufferedInputStream,还有StringBuffer类。这些处理类,更放方便使用。

IO流分类

一、按数据来源(去向)分类:
1、是文件: FileInputStream, FileOutputStream, FileReader, FileWriter
2、是byte[]:ByteArrayInputStream, ByteArrayOutputStream
3、是Char[]: CharArrayReader, CharArrayWriter
4、是String: StringBufferInputStream, StringReader, StringWriter
5、网络数据流:InputStream, OutputStream, Reader, Writer
二、按是否格式化输出分:
1、要格式化输出:PrintStream, PrintWriter
三、按是否要缓冲分:
1、要缓冲:BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter
四、按数据格式分:
1、二进制格式(只要不能确定是纯文本的): InputStream, OutputStream及其所有带Stream结束的子类
2、纯文本格式(含纯英文与汉字或其他编码方式);Reader, Writer及其所有带Reader, Writer的子类
五、按输入输出分:
1、输入:Reader, InputStream类型的子类
2、输出:Writer, OutputStream类型的子类
六、特殊需要:
1、从Stream到Reader,Writer的转换类:InputStreamReader, OutputStreamWriter
2、对象输入输出:ObjectInputStream, ObjectOutputStream
3、进程间通信:PipeInputStream, PipeOutputStream, PipeReader, PipeWriter
4、合并输入:SequenceInputStream
5、更特殊的需要:PushbackInputStream, PushbackReader, LineNumberInputStream, LineNumberReader


常用操作代码:

 in2OutStream(InputStream in, OutputStream out, int bufferSize) throws IOException {

           byte[] buffer = new byte[bufferSize];// 缓冲区

           for (int bytesRead = 0; (bytesRead = in.read(buffer)) != -1;) {

                out.write(buffer, 0, bytesRead);

                Arrays.fill(buffer, (byte) 0);

            }


readFileToByteArray(File file) throws IOException {

            ByteArrayOutputStream bos = null;

            try {

                bos = readFileToByteStream(file);

            } finally {

                if (bos != null)

                    bos.close();

            }

            return bos.toByteArray();

        }

ByteArrayOutputStream readFileToByteStream(File file)

                throws IOException {

            FileInputStream fis = null;

            ByteArrayOutputStream bos = null;

            try {

                fis = new FileInputStream(file);

                bos = new ByteArrayOutputStream();

                in2OutStream(fis, bos, BUFFER_SIZE);

            } finally {

                if (fis != null)

                    fis.close();

            }

            return bos;

        }


键盘输入:    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

Scanner sc = new Scanner(System.in);
System.out.println(“请输入你的姓名:”);
String name = sc.nextLine();
System.out.println(“请输入你的年龄:”);


附加:

>>IO是非常重要的东西。在大量数据的获取,处理,存储都有体现。

>>

>>

>>

>>





0 0
原创粉丝点击