Java自学之路-Java基础教程-31:Java读文件操作和类的构造方法
2018-03-19 16:05
671 查看
下面我们来看如何使用Java来操作本地磁盘上的文件。
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
File javaFile = new File("E:/yingyinyi_new/calculateApp/.project");
FileInputStream fis = new FileInputStream(javaFile);
byte[] bytes = new byte[1024];
StringBuffer stringBuffer = new StringBuffer();
while (fis.read(bytes) != -1) {
stringBuffer.append(new String(bytes));
}
System.out.println(stringBuffer.toString());
}
比如本地磁盘上有E:/calculateApp/.project这个文本文件,我们要把它读出来,并在控制台把文件里面的内容打印出来。首先进行文件操作,要使用Java的一个操作文件的类File,要用这个类必须先创建这个类的对象。第一句File javaFile = new File("E:/calculateApp/.project");就是创建了一个File的对象,这里没有直接new File()而是new File()的括号里面加了一个参数"E:/calculateApp/.project",即是文件所在的位置,这个带有参数的File("E:/calculateApp/.project")就是一个带有参数的构造方法。其实创建一个类的对象,就是使用new关键字,再加上类的构造方法。之前我们创建对象,也是使用类的构造方法创建的,比如Person person = new Person();这个Person()即是一个空的构造方法。
在使用File类时需要用到import关键字在类里面引入这个类所在的包。也就是在第一行加入import java.io.*;这样一句。import就是导入的意思,把java.io.*的包全导入进来使用。
再下面一句FileInputStream fis = new FileInputStream(javaFile);也是创建了一个FileInputStream类的对象,这是一个操作文件流的类,所有文件相关的操作多是以流的方式。因为这里是把文件读进程序的内存,所以是使用输入流的类。
再下面一句byte[] bytes = new byte[1024];是创建了一个空的长度为1024的数组,数组类型为byte。计算机的文件是以字节码的方式存储的,所以可以使用字节码类型的数组来进行读取。
再下面一句StringBuffer stringBuffer = new StringBuffer();又创建了一个StringBuffer类的对象。这个StringBuffer类和String类很相似,但这个类可以随时加长,有个.append()方法可以做到在末尾加新的内容。
while (fis.read(bytes) != -1)这句就是一个循环语句了,它表示用FileInputStream对象的.read()方法读到文件里的内容,每读一次就存到bytes里面。直到fis.read(bytes) != -1这个条件满足,也就是读到了文件末尾,这个.read()方法就会返加一个int类型的值-1。while循环体{}里面的一句stringBuffer.append(new String(bytes));是把读进bytes数组里的字节内容转为String字符串,并把字符串拼到stringBuffer的末尾。这样一个字节一个字节地读文件,每读满1024个字节就把数组里的内容放到字符串里。最后,把整个字符串打印出来。
Java读文件的操作用到了几个常用的API类,File、FileInputStream、StringBuffer、String都是以后一定会用到的。
这里还提到了类的构造方法。每个类都有一个自带的方法,就是构造方法。构造方法就是为了构造类的对象而存在的。前面使用Java写一个类Class,比如CalculateMain这个类,也是有构造方法的,Person类也是有构造方法的,因为创建类的对象需要用new再加上构造方法进行实现。构造方法有的有参数,有的是空的没有参数即空的构造方法。所以创建类的对象,要么是用new File()这样,要么是用new File("E:/.project")这样的构造。因此,Java的类有普通的成员方法,还有构造方法,如果是空构造方法是隐藏的。但如果一个类有了一个有参数的构造方法,比如Person(String nation),那就一定要在类里再写一个空的构造方法Person()。
package com.helloworld;
public class Person {
public String nation = "USA";
public Person(String nation) {
}
public Person() {
}
public void speak() {
String word = "ABC";
System.out.println("Hi!");
System.out.println(nation);
System.out.println(word);
}
}
上面这个类Person有三个方法,构造方法Person(String nation),构造方法Person(),成员方法void speak()。不同的是,构造方法不写返回值,而且修饰符一定是public的。
具有OCR和ASR功能,可以识别图片和录音中文字,并有多国语言翻译功能,可以作为便签或笔记,类似微博的图文应用
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
File javaFile = new File("E:/yingyinyi_new/calculateApp/.project");
FileInputStream fis = new FileInputStream(javaFile);
byte[] bytes = new byte[1024];
StringBuffer stringBuffer = new StringBuffer();
while (fis.read(bytes) != -1) {
stringBuffer.append(new String(bytes));
}
System.out.println(stringBuffer.toString());
}
比如本地磁盘上有E:/calculateApp/.project这个文本文件,我们要把它读出来,并在控制台把文件里面的内容打印出来。首先进行文件操作,要使用Java的一个操作文件的类File,要用这个类必须先创建这个类的对象。第一句File javaFile = new File("E:/calculateApp/.project");就是创建了一个File的对象,这里没有直接new File()而是new File()的括号里面加了一个参数"E:/calculateApp/.project",即是文件所在的位置,这个带有参数的File("E:/calculateApp/.project")就是一个带有参数的构造方法。其实创建一个类的对象,就是使用new关键字,再加上类的构造方法。之前我们创建对象,也是使用类的构造方法创建的,比如Person person = new Person();这个Person()即是一个空的构造方法。
在使用File类时需要用到import关键字在类里面引入这个类所在的包。也就是在第一行加入import java.io.*;这样一句。import就是导入的意思,把java.io.*的包全导入进来使用。
再下面一句FileInputStream fis = new FileInputStream(javaFile);也是创建了一个FileInputStream类的对象,这是一个操作文件流的类,所有文件相关的操作多是以流的方式。因为这里是把文件读进程序的内存,所以是使用输入流的类。
再下面一句byte[] bytes = new byte[1024];是创建了一个空的长度为1024的数组,数组类型为byte。计算机的文件是以字节码的方式存储的,所以可以使用字节码类型的数组来进行读取。
再下面一句StringBuffer stringBuffer = new StringBuffer();又创建了一个StringBuffer类的对象。这个StringBuffer类和String类很相似,但这个类可以随时加长,有个.append()方法可以做到在末尾加新的内容。
while (fis.read(bytes) != -1)这句就是一个循环语句了,它表示用FileInputStream对象的.read()方法读到文件里的内容,每读一次就存到bytes里面。直到fis.read(bytes) != -1这个条件满足,也就是读到了文件末尾,这个.read()方法就会返加一个int类型的值-1。while循环体{}里面的一句stringBuffer.append(new String(bytes));是把读进bytes数组里的字节内容转为String字符串,并把字符串拼到stringBuffer的末尾。这样一个字节一个字节地读文件,每读满1024个字节就把数组里的内容放到字符串里。最后,把整个字符串打印出来。
Java读文件的操作用到了几个常用的API类,File、FileInputStream、StringBuffer、String都是以后一定会用到的。
这里还提到了类的构造方法。每个类都有一个自带的方法,就是构造方法。构造方法就是为了构造类的对象而存在的。前面使用Java写一个类Class,比如CalculateMain这个类,也是有构造方法的,Person类也是有构造方法的,因为创建类的对象需要用new再加上构造方法进行实现。构造方法有的有参数,有的是空的没有参数即空的构造方法。所以创建类的对象,要么是用new File()这样,要么是用new File("E:/.project")这样的构造。因此,Java的类有普通的成员方法,还有构造方法,如果是空构造方法是隐藏的。但如果一个类有了一个有参数的构造方法,比如Person(String nation),那就一定要在类里再写一个空的构造方法Person()。
package com.helloworld;
public class Person {
public String nation = "USA";
public Person(String nation) {
}
public Person() {
}
public void speak() {
String word = "ABC";
System.out.println("Hi!");
System.out.println(nation);
System.out.println(word);
}
}
上面这个类Person有三个方法,构造方法Person(String nation),构造方法Person(),成员方法void speak()。不同的是,构造方法不写返回值,而且修饰符一定是public的。
具有OCR和ASR功能,可以识别图片和录音中文字,并有多国语言翻译功能,可以作为便签或笔记,类似微博的图文应用
相关文章推荐
- Java自学之路-Java基础教程-32:Java写文件操作和IO输入输出流
- Java自学之路-Java基础教程-21:Java的方法参数以及Eclipse新建工程和类
- Java自学之路-Java基础教程-22:Java的方法返回值和return关键字
- Java自学之路-Java基础教程-36:Java的数据库连接操作以及外部jar包导入
- Java自学之路-Java基础教程-1:第一行Java代码Hello World!
- Java自学之路-Java基础教程-9:Java的变量类型-8种基本类型和3种引用类型
- Java自学之路-Java基础教程-23:Java程序的打包和命令行运行jar包
- Java自学之路-Java基础教程-10:Java的4种运算符-算数运算符、关系运算符、逻辑运算符、位运算符
- Java自学之路-Java基础教程-27:Java Web工程的运行和Tomcat服务器
- Java自学之路-Java基础教程-28:Java和HTML代码在JSP中的应用和运行
- Java自学之路-Java基础教程-18:Java四大特性之多态性以及接口interface
- 黑马程序员--Java基础加强--16.利用反射操作泛型V【通过Constructor反射解析泛型构造方法】【通过Field反射解析泛型成员变量】【个人总结】
- Java自学之路-Java基础教程-24:Java工程结构以及类路径classpath
- Java自学之路-Java基础教程-3:Java程序的编译javac和执行java
- Java自学之路-Java基础教程-25:Java运行环境JRE及开发包JDK
- Java自学之路-Java基础教程-19:Java四大特性之抽象性以及abstract
- Java自学之路-Java基础教程-6:Java术语之修饰符public
- Java自学之路-Java基础教程-11:Java基本语句之1-条件控制语句if和else
- Java自学之路-Java基础教程-2:运行Java程序的Java虚拟机环境塔建
- Java自学之路-Java基础教程-17:Java四大特性之继承性以及extends父类和子类