在做Lab1时遇到了一些问题,记录下解决方法。
1.文件读取
文件读取大体上分为两种方式,一种是按照字节读取文件,一种是按照字符读取文件。按照字节读取的文件,除非内容是单字节的,否则读取出来的内容不是直观的,这中读取方式适合读取图像文件,视频文件等。按照字符读取文件要求读取出来的内容是直观的,这种读取方式适合读取文本文件等。
1.1使用缓冲流+字符流+文件字节流读取(读字符)
FileInputStream按照字节读取文件 InputStreamReader将字节内容转换成字符 BufferedReader提高了读取的效率
这种方式适合读取文本文件等内容直观的文件
public void read(String filename) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(filename)));
String line = null;
while((line=in.readLine())!=null)
{
System.out.println(line);
}
in.close();
}
1.2使用缓冲流+文件字符流读取(读字符)
FileReader是文件字符流,按照字符读取文件;
BufferedReader提高了文件读取的效率,这种方式适合读取文本文件等内容直观的文件
public void read(String filename) throws IOException {
BufferedReader in = new BufferedReader(new FileReader(filename));
String line = null;
while((line=in.readLine())!=null)
{
System.out.println(line);
}
in.close();
}
1.3使用缓冲流+文件字节流读取文件(读字节)
FileInputStream按照字节读取文件
BufferedInputStream带缓冲的输入流,提高读取效率
public void read(String filename) throws IOException {
BufferedInputStream in = new BufferedInputStream(new FileInputStream(filename));
int i;
while ((i = in.read()) != -1) {
System.out.print(i);
}
in.close();
}
1.4直接使用文件字节流读取文件(读字节)
public static void read(String filename) throws IOException {
File file = new File(filename);
InputStream in = null;
in = new FileInputStream(file);
int tempbyte;
while ((tempbyte = in.read()) != -1) {
System.out.write(tempbyte);
}
in.close();
}
2.git的使用
实验中需要在github上获取和上传文件,由于是第一次接触git,所以很生疏,在翻阅并学习git的中文教程后(https://git-scm.com/book/zh/v2),开始上手git。在之前的一个博客里记录了git的一些基本命令的用法。
3.正则表达式
在实验中遇到了怎样判别txt文件中的数字不是通过制表符‘t’分隔开的。数字不是制表符分隔开,则其分隔符类型不知道,直接查找文本中的内容,寻找制表符之外的分隔符显然很难实现。所以想到了Java语言的正则表达式,对字符串的内容进行模式匹配,来判断文本中是否有除了制表符之外的其他分隔符。正则表达式参考网址
String rxp = "[^0123456789.-]";
Pattern r = Pattern.compile(rxp);
...
Matcher m = r.matcher(nums[i]);
if (m.find() == true) {
System.out.println("矩阵元素不是用制表符分隔开!");
return false;
}
这里使用了正则表达式[^0123456789.-],这是表示匹配0-9.-之外的符号,如果匹配到其他符号,则说明分隔符不仅仅是制表符,还有其他的符号。



