在Java中,文件读取主要有两种方式:字节流和字符流。其中,字节流可以读取任意类型的文件,而字符流只能读取文本文件。
下面介绍一下如何使用字节流读取文件:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class ReadFile {
public static void main(String[] args) {
File file = new File("/path/to/file");
FileInputStream fis = null;
try {
fis = new FileInputStream(file);
byte[] data = new byte[(int) file.length()];
fis.read(data);
String result = new String(data);
System.out.println(result);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}上述代码中,先通过File类指定要读取的文件路径,然后使用FileInputStream类读取文件,最后将字节流转换为字符串输出。
如果要使用字符流读取文本文件,可以使用FileReader类或BufferedReader类。下面是使用BufferedReader类读取文件的示例:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class ReadFile {
public static void main(String[] args) {
File file = new File("/path/to/file");
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(file));
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}上述代码中,先通过File类指定要读取的文件路径,然后使用BufferedReader类读取文件,最后逐行输出。
文件写入也分为字节流和字符流。下面介绍一下如何使用字节流写入文件:
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
public class WriteFile {
public static void main(String[] args) {
File file = new File("/path/to/file");
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
String data = "Hello, World!";
fos.write(data.getBytes());
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}上述代码中,先通过File类指定要写入的文件路径,然后使用FileOutputStream类写入文件。
如果要使用字符流写入文本文件,可以使用FileWriter类或BufferedWriter类。下面是使用BufferedWriter类写入文件的示例:
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class WriteFile {
public static void main(String[] args) {
File file = new File("/path/to/file");
BufferedWriter writer = null;
try {
writer = new BufferedWriter(new FileWriter(file));
writer.write("Hello, World!");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}上述代码中,先通过File类指定要写入的文件路径,然后使用BufferedWriter类写入文件。
文件复制也可以使用字节流和字符流。下面介绍一下如何使用字节流复制文件:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyFile {
public static void main(String[] args) {
File source = new File("/path/to/source");
File target = new File("/path/to/target");
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream(source);
fos = new FileOutputStream(target);
byte[] data = new byte[(int) source.length()];
fis.read(data);
fos.write(data);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fis.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}上述代码中,先通过File类指定要复制的源文件路径和目标文件路径,然后使用FileInputStream类读取源文件,FileOutputStream类写入目标文件。
如果要使用字符流复制文本文件,可以使用BufferedReader类和BufferedWriter类。下面是使用BufferedReader类和BufferedWriter类复制文件的示例:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CopyFile {
public static void main(String[] args) {
File source = new File("/path/to/source");
File target = new File("/path/to/target");
BufferedReader reader = null;
BufferedWriter writer = null;
try {
reader = new BufferedReader(new FileReader(source));
writer = new BufferedWriter(new FileWriter(target));
String line = null;
while ((line = reader.readLine()) != null) {
writer.write(line);
writer.newLine();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
reader.close();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}上述代码中,先通过File类指定要复制的源文件路径和目标文件路径,然后使用BufferedReader类读取源文件,BufferedWriter类写入目标文件。
本文为翻滚的胖子原创文章,转载无需和我联系,但请注明来自猿教程iskeys.com
