zoukankan      html  css  js  c++  java
  • 第十周课程总结

    本周Java课程学习总结

    一、使用RandomAccessFile类读取数据

    读取时直接使用“r”的模式即可。以只读的方式打开文件。读取时所有的字符串只能按照byt数组的方式读取出来,而且所有的长度是8位。

    源代码:https://blog.csdn.net/u013087513/article/details/51911577

    import java.io.File ;
    import java.io.RandomAccessFile ;
    public class RandomAccessFileDemo02{
        // 所有的异常直接抛出,程序中不再进行处理
        public static void main(String args[]) throws Exception{
            File f = new File("d:" + File.separator + "test.txt") ;    // 指定要操作的文件
            RandomAccessFile rdf = null ;        // 声明RandomAccessFile类的对象
            rdf = new RandomAccessFile(f,"r") ;// 以只读的方式打开文件
            String name = null ;
            int age = 0 ;
            byte b[] = new byte[8] ;    // 开辟byte数组
            // 读取第二个人的信息,意味着要空出第一个人的信息
            rdf.skipBytes(12) ;        // 跳过第一个人的信息
            for(int i=0;i<b.length;i++){
                b[i] = rdf.readByte() ;    // 读取一个字节
            }
            name = new String(b) ;    // 将读取出来的byte数组变为字符串
            age = rdf.readInt() ;    // 读取数字
            System.out.println("第二个人的信息 --> 姓名:" + name + ";年龄:" + age) ;
            // 读取第一个人的信息
            rdf.seek(0) ;    // 指针回到文件的开头
            for(int i=0;i<b.length;i++){
                b[i] = rdf.readByte() ;    // 读取一个字节
            }
            name = new String(b) ;    // 将读取出来的byte数组变为字符串
            age = rdf.readInt() ;    // 读取数字
            System.out.println("第一个人的信息 --> 姓名:" + name + ";年龄:" + age) ;
            rdf.skipBytes(12) ;    // 空出第二个人的信息
            for(int i=0;i<b.length;i++){
                b[i] = rdf.readByte() ;    // 读取一个字节
            }
            name = new String(b) ;    // 将读取出来的byte数组变为字符串
            age = rdf.readInt() ;    // 读取数字
            System.out.println("第三个人的信息 --> 姓名:" + name + ";年龄:" + age) ;
            rdf.close() ;                // 关闭
        }
    }

    运行截图

     重要内容

     二、字节流与字符流基本操作

    1.在Java中IO操作以文件操作为例,主要操作流程如下:

      (1) 使用File类打开一个文件。

    (2)通过字节流或字符流的子类指定输出的位置。

    (3)进行读/写操作。

    (4)关闭输入/输出。

    2.异常的处理的格式

    try{可能有问题的代码}
    catch(Exception e){问题的解决方式}
    finally{一定会执行的代码,一般为关闭资源等内容}

     三、字节流与字符流的区别(除了代码上的区别)

    1.在字符流的操作中,所有的字符都是在内存中形成的,所以在输出前会将所有的内容暂时保存在内存之中,所以使用了缓存区暂存数据。

    2.字节流在操作的时候本身不会用到缓冲区(内存),是于文件本身直接操作,而字符流在操作时使用到缓冲区,通过缓冲区再操作文件。

     四、转换流——OutputStreamWrite类与InputStreamReader类

    1.把字节流转换成字符流,或者把字符流转为字节流    称为转换流: 

    InputStreamReader(前缀是功能,后缀是体系):字节流通向字符流的桥梁。他可以使用指定的charset读取字节流并将其解码为字符。

    OutputStreamWriter:字符流通向字节流的桥梁,他可以使用指定的charset将要写入流的字符编码成字节 。

    2.内存操作流

    (1)字节内存流:ByteArrayInputStream(内存字节输入流)、ByteArrayOutputStream(内存字节输出流)。使用byte数据类型。

    (2)字符内存流:CharArrayReader(内存字符输入流)、CharArrayWriter(内存字符输出 流)。使用Char数据类型。

    3.管道流

     4.System.in

    System.in实际上是一个键盘的输入流,其本身是InputStream类型的对象,可以完成从键盘读取数据的功能。

    5.关于乱码问题

    指定大小会出现空间限制,不指定大小输入中文会产生乱码。最好的输入方式是将全部输入的数据暂时放到一块内存中,然后一次性从内存中读取出数。可以使用BufferedReader类完成。

    6.BufferedReader 字符流,只能装饰字符流,不能装饰字节流。有个重要且好用的方法是readLine()整行读取字符。

    五、作业:使用内存操作流完成字母的转换

    实验代码

    package shiyan;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.OutputStream;
    public class Alter {
    
        public static void main(String[] args) throws IOException, java.io.IOException {
            
            String path="F:"+File.separator+"test.txt";      //声明文件地址
            File f =new File(path);
            OutputStream out=new FileOutputStream(f);        //准备好输出对象进行实例化
            String str="the more the more you will be";        //输入该字符串
            byte b[]=str.getBytes();           //字符串转byte数组
            for(int i=0;i<b.length;i++){      //循环遍历数组
                if (i % 2 == 0 && b[i] >= 'a' && b[i] <= 'z') {//判定条件
                    b[i] = (byte) (b[i] - 32);        //将字符改为大写
                }
    
            }
            out.write(b);       //将内容输出
            out.close();         //关闭输出流
        }
    
    }
    package shiyan;
    
    public class IOException extends Exception {
    
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    
        }
    
    }

    实验截图

  • 相关阅读:
    NVIDIA GTC照片
    渲染农场云云
    Visual Studio 2008 SP1键盘F10单步调试超慢解决方法
    跨DLL操作fopen的返回值导致出错
    OSL LLVM 3.3 Related Changes
    Windows上编译OpenShadingLanguage
    Windows上编译OpenImageIO
    Windows上编译LLVM 3.2
    Windows上编译OpenEXR
    Windows上编译libtiff
  • 原文地址:https://www.cnblogs.com/Markming/p/11785512.html
Copyright © 2011-2022 走看看