第十一周的做业。
html
目录
1.本章学习总结
2.Java Q&A
3.码云上代码提交记录及PTA实验总结
4.课后阅读java
1.1 以你喜欢的方式(思惟导图或其余)概括总结多流与文件相关内容。git
将Student对象(属性:int id, String name,int age,double grade)写入文件student.data、从文件读出显示。正则表达式
生成文件大小:48字节编程
属性 | 字节数 |
---|---|
num | 1 |
name | 4 |
age | 2 |
score | 4 |
分隔符(共三个) | 3 |
行末尾 | 2 |
一行 | 16 |
0字节
由于数据写到缓冲区上,原来有close()方法自动调用flush()来刷新,可是如今没有close()了,因此数据在缓冲区上直接丢失了。设计模式
用BufferedReader更快,由于使用缓冲能够减小IO次数,能够防止每次读取时都得进行实际的读操做。其实Scanner也有缓冲区,可是相比于BufferedReader要小很多。数组
有提高,一样是由于BufferedWriter使用了缓冲技术浏览器
有乱码,由于FileReader并无实现父类中带字符集参数的构造函数,只能按系统默认的字符集来解码。多线程
这样解决:
app
51字节:一个int4字节,一个double8字节,名字都只有3个字符,再加上正文结束标识符(两个字符),每一个名字有5个字符,一个字符一字节,每一个名字5个字节。一个学生17个字节,一共三名学生,51字节。
分析数据是这样存储的:
0000 000c -> 12
4055 c000 0000 0000 -> 87.50
0003 7177 65 -> qwe
00 0000 0a -> 10
40 52e0 0000 0000 00 -> 75.5
00 0366 6666 -> fff
0000 0008 -> 8
404f 0000 0000 0000 -> 62.0
0003 6376 62 -> cvb
首先使用BufferedReader,使用缓冲技术,让读写更高效!
而后由于要读UTF-8格式的文件,因此须要用到InputStreamReader,而后输入流由FileInputStream提供支持。
固然使用Scanner也不错的。
72字节
属性 | 字节数 |
---|---|
num | 4 |
name(两个中文字符) | 6 |
字符串结尾 | 2 |
age | 4 |
score | 8 |
一行 | 24 |
DFS改为BFS,EZ:
(见题4.3)
稍做改动就能够删了
题目是这个意思吗= =,可是应该用个比较厉害的,好比
String patternDigitString = "[+-]?[0-9]+";
倒数第二张图:
题目集:多线程(4-4到4-10)
在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 而后搜索并截图
该java.io包中包含不少类可使你的程序用来读取和写入数据。大多数类实现顺序访问流。顺序访问流能够分为两类:读写字节和读写Unicode字符。每一个顺序访问流都具备各自的特性,例如读取或写入一个文件,当 读写的时候筛选数据,或序列化一个对象。
java.nio.file包为文件和文件系统I/O提供普遍支持。这是一个很是全面的API,但关键切入点以下:
关于NIO.2的更多信息能够在java.net的OpenJDK:NIO项目网页中被找到。该网站包括不少NIO.2的本教程没有说起的功能,如多播,异步I/O,并建立本身的文件系统。
Questions
What class and method would you use to read a few pieces of data that are at known positions near the end of a large file?
想用RandomAccessFile来实现,可是标答说newByteChannel会更好,还没研究过,有时间看看,这都是nio的东西。
When invoking format, what is the best way to indicate a new line?
%n是相对于\n更好的选择,由于后者不具备平台独立性。
下面关于NIO的我都是先搬过来,后面再深刻了解。
How would you determine the MIME type of a file?
MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。MIME_百度百科
Files中的probeContentType()方法用来判断。
What method(s) would you use to determine whether a file is a symbolic link?
symbolic link符号连接,又称为软连接,是做为另外一个文件的引用。软连接对于应用来讲是透明的,对于软连接的操做都会被从新定向到连接的目标文件中去。软链接的删除对于指向的文件没有任何影响,可是若是指向的文件被删除以后,软连接便会失效。Files类重有isSymbolicLink()来判断一个文件是不是一个符号连接。
Exercises
Exercise 1. Write an example that counts the number of times a particular character, such as e, appears in a file. The character can be specified at the command line. You can use xanadu.txt as the input file.
String line = null; while ((line = bufferedReader.readLine()) != null) { for (int i = 0; i < line.length(); i++) { if (line.charAt(i) == lookFor) { cnt++; } } } System.out.println(cnt); bufferedReader.close();
Exercise 2. The file datafile begins with a single long that tells you the offset of a single int piece of data within the same file. Write a program that gets the int piece of data. What is the int data?
文件损坏了……
匹配验证:
//编译正则表达式 Pattern pattern = Pattern.compile(regex) //CASE_INSENSITIVE表示对大小写不敏感 Matcher matcher = pattern.matcher(str); // 字符串是否与正则表达式相匹配 return matcher.matches; //()返回一个boolean值,表示是否匹配
字符串中查询字符或者字符串:
matcher.find()用来查找主串当中是否有包含咱们须要的字符串,若是有包含,咱们就能够调用matcher.start()和matcher.end()来获取该匹配字符串的开始和结尾。
看的不过瘾的请点下面
回到顶部
又是作的很糙的一次,笑容尬住