发表于: 2020-05-26 21:43:26

1 1159


今日作为:按照任务要求创建表结构,ID long类型 自增,设为主键,设为索引,create_at创建时间和update_at修改时间系统自动填写

                  设置姓名为索引

                  按照任务的需要设置了合理数值类型,添加一条报名表,添加10条报名表,删除表,然后导入还原。

                  使用sql语句还原增删改查(忘了截图了。。。。。。。)

            


复习还有一点内容,这是今天的笔记:

I/O操作的重要性

绝大多数的应用程序,都由三大逻辑块构成:

1.输入数据(Input

2.计算数据(Compute

3.输出数据(Output

 

Java总,I/O机制都是基于数据流方式进行输入输出,这些数据流可视为流动数据序列

Java把这些不同来源和目标的数据,统一抽象为数据流

Java需要程序读取数据时,就会开启一个通向数据源的流,这个数据源可以是文件、内存,也可以是网络连接

Java程序需要写入数据时,也会开启一个通向目的地的流

流为操作各种物理设备提供了一致的接口

通过打开操作将流关联到文件,通过关闭操作将流和文件解除关联

I/O流的优势在于简单易用,缺点是效率较低

 

Java类库中,有关I/O操作的内容非常庞大:

                     标准输入/输出

                     文件的操作

                     网络上的数据流

                     字符串流

                     对象流

 

 

File文件类

java.io包这个大家族中,大多数类都是针对数据实施流式操作的,但是File类是个例外,它仅仅用于处理文件和文件系统,是唯一一个于文件本身有关的操作类,他没有指定数据怎样从文件读取或如何把数据存贮到文件中,它仅仅描述了文件本身的属性

File类除了对文件操作外,还可以将目录当做文件进行处理——Java中的目录当成File对象对待

 

要想使用File类进行操作,就必须设置一个操作文件的路径

File ( String directoryPath )    //创建指定文件或目录路径的File对象

File ( String directoryPath , String filename )  

              //创建由File对象和指定文件的File对象

File (File dirObj , String filename )

//创建指定文件目录路径和文件名的File对象

directoryPath 表示文件的路径名

filename   表示文件名

dirObj        表示一个指定目录的File对象

 

分隔符

Windows       /     ( \\ )

Linux / UNIX    /

File类中定义了很多获取File对象标准属性的方法,例如:

getName ( ) 用于返回文件名     getParent ( ) 返回父目录名

exists ( ) 在文件存在的情况下返回true,反之返回false

File类的方法是不对称的

1.文件的基本操作存在延迟

2.为了让Java程序具备可移植性,就必须考虑分隔符的问题

File类中提供了一个常量public static final String separator

File file = new File( c: + File . separator + 1 . txt ) ;

                  //要定义的操作文件路径

   只要遇见路径分隔符的问题,都可以用separator常量来解决,separator

   会自动根据当前运行的系统,确定使用何种分隔符

 

文本文件的操作

java中,读取文本的方便的机制,莫过于使用Scanner来完成

 

首先需要一个文件名,来构造一个File文件对象

File  inputFile  =  new  File(  input . txt ) ;

然后将这个文本文件当做参数,构建Scanner对象

Scanner  in  =  new  Scanner ( inputFile )  ;

于是,Scanner对象就可以把文件作为数据输入源,然后就可以使用Scanner的方法( nextlnt( )nextDouble( )next( )等方法 )

 

如果我们想读入input.txt中所有的浮点数,就可以使用如下模式

 

while ( in.hasNextDouble() )     //如果还有下一个double类型的值

{

  double value =in.nextDouble(); //读入这个值

 //处理这个数值

 

 

 

而对于将数据输入到一个文件中,有很多方法,其中使用PrintWriter类较为常见

PrintWriter  out  =  new  PrintWriter( output.txt ) ;

output.txt是输出文件的名称,如果这个文件已经存在,则会清空文件内容,再写入新内容,如果不存在,则穿件一个名为ouput.txt的文件

PrintWriterPrintStream的一个功能增强类,而PrintStream类其实不陌生,System.outSystem.in都是这个类的对象

printprintlnprintf等方法都试用与PrintWriter的对象

out.println( Hello Java! ) ;

out.printf( value:%6.2f\n , value ) ;

当我们处理完毕数据的输入和输出是,一定要关闭这两个对象,以免他们继续占据系统资源

in.close( ) ;

out.close( ) ;

 

还需要注意的是,PrintWriter类的输出对象out,可以直接用文件名来构建

EX:     PrintWriter out  =  new PrintWriter( out.xtxt ) ;

但是用Scanner类构建的输入对象in,则必须用文件File类的对象构建

EX:     Scanner in   =  new Scanner( input.txt ) ;        //语义错误

 

为了读取用空格隔开的字符串(文本单词),比较简单的方法就是使用Scannernext( )方法,他可以用来读取下一个字符串,在用这个方法前,建议用hasNext( )判断一下是否还有下一个可读取的字符串,以免抛出异常

 

分隔符方法useDelimiter( )默认以空格作为分隔符,可以使用正则表达式

 

 

当我们需要知道某个字符串的某个字符是哪一类字符时,可以使用Character类中的一些静态方法

Character.isDigit (ch)    //判断ch是否为数字0~9中的一个

isDigit ( char )          判断指定的char值是否为数字    

            true  0,1,2....9         

isLetter ( char)         判断指定的char值是否为字母

            true     A,B,C,a,b,c

isUpperCase ( char )     判断指定的char值是否为字母

            true     A,B,C

isLowerCase ( char )     判断指定的char值是否为字母

            true     a,b,c

isWhiteSpace ( char )    判断指定的char值是否为空白字符

            true     空格、Tab和回车

 

nextLine( )方法可以一次性读取一行的字符串,为了保证每次都能读取一行,建议先用hasNextLine( )提前判断,当还能读取一行或多行字符是会返回true,否则返回false

 

trim( )方法,可以吧一个字符串的前面或最后面的空白字符剪掉

i

nteger.parselnt( )方法可以分析输入的字符是不是整形,如果是,就转换为对应的整形数值

System类对I/O的支持

 

为了支持标准输入输出设备,Java定义了三个特殊的流对象常量

 

错误输出:public static final PrintStream err

系统输出:public static final PrintStream out

系统输出:public static final PrintStream in

 

System.in通常对应键盘,属于InputStream类型,程序使用System.in可以读取从键盘上的输入的数据

 

System.out通常对应显示器,属于PrintStream类型,PrintStreamOutputStream的一个子类,程序使用System.out可以将数据输出到显示器上

键盘可以被当做一个特殊的输入流,显示器可以被当做一个特殊的输出流

 

System.err则是串门用于输出系统错误的对象,它可视为特殊的System.out

 

按照Java原本的设计,System.err输出的错误是不希望用户看见的,而System.out的输出是希望用户看见的

 

缓冲流:先把文件从硬盘读取到内存,把它缓存起来,然后再使用一个缓冲流对内存里面的数据进行操作,这样就可以提高文件读写速度

 

字节流和字符流

1字符数据可以方便诸如中文的双字节编码处理

2在网络传输或数据保存时,数据操作单位都是自己,而不是字符

3字节流和字符流在操作形式上都是类似的

4字节流操作时没有使用到缓冲区,但字符流操作室需要缓冲区,字符流在关闭时默认清空缓冲区,如果没有关闭,可用flush( )方法手工清空缓冲区

在开发之中,尽量使用字节流进行操作,因为字节流可以处理图片、音乐、文字,也可以方便地进行传输或者是文字的编码转换

在处理中文的时候可以考虑字符流


明日的计划:继续复习一下,然后开始准备任务17以及按照验收要求准备做任务


今日疑问:对于I/O这块还不是特别熟练,明天继续做一下书本的习题


返回列表 返回列表
评论

    分享到