Java读取文件操作,输入输出流
Java读取文件操作,
输入输出流的用法:FileInputStream、FileOutputStream类
1.首先了解一下,IO流继承关系,如图所示:(了解)
2.下列源码实现对文件夹的创建和删除操作
import java.io.File;
public class Demo01 {
public static void main(String[] args) {
//在项目的根目录下创建一个a文件夹
File file = new File("a/b/c");
//创建目录
// if(file.mkdirs()){
// System.out.println("成功!");
// }else{
// System.out.println("失败!");
// }
//删除目录
if(file.delete()){
System.out.println("删除成功");
}else{
System.out.println("删除失败");
}
}
}
3.请看下列源码实现对文件的操作
—— 创建一个文件
—— 对文件的删除
—— 修改文件名
import java.io.File;
import java.io.IOException;
public class Demo {
public static void main(String[] args) {
//创建一个File对象
File file = new File("../相对路径.txt");
//创建一个新文件
try {
if(file.createNewFile()){
System.out.println("文件创建成功");
}else{
System.out.println("文件创建失败");
}
} catch (IOException e) {
e.printStackTrace();
System.out.println("文件创建异常");
}
// //使用绝对路径
// File file3 = new File("D://Hello2");
// //创建一个新文件
// try {
// if(file3.createNewFile()){
// System.out.println("文件创建成功");
// }else{
// System.out.println("文件创建失败");
// }
// } catch (IOException e) {
// e.printStackTrace();
// System.out.println("文件创建异常");
// }
// //删除一个文件
// if(file.delete()){
// System.out.println("文件删除成功");
// }else{
// System.out.println("文件删除失败");
// }
// //重命名
// File file2 = new File("Hello.java");
// if(file.renameTo(file2)){
// System.out.println("重命名成功!!!");
// }else{
// System.out.println("重命名失败!!!");
// }
}
}
4.请看下列源码实现对TXT文件的读取操作
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class Demo {
public static void main(String[] args) {
// 文件对象
File file = new File("a.txt");
FileInputStream is = null;
try {
//字节输入流对象
is = new FileInputStream(file);
// while (true) {
// int i = is.read();
//
// if (i == -1) {
// break;
// }
// System.out.println((char) i);
// }
//上诉写法改写成如下
int i;
while((i = is.read())!=-1){
System.out.println((char) i);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
上面的代码对于中文的读取会乱码,因为该方法是以字节流的方式进行的:下面来看以字符流的方式实现诉功能:
import java.io.File;
import java.io.FileReader;
import java.io.Reader;
public class Demo04 {
public static void main(String[] args) {
//使用字符流读取a.txt
File file = new File("a.txt");
Reader reader = null;
try {
reader = new FileReader(file);
char [] b = new char [1024];
int len = 0;
while((len = reader.read(b))!=-1){
System.out.println(new String(b,0,len));
}
} catch (Exception e) {
// TODO: handle exception
}
}
}
5.请看下列源码实现对TXT文件的写入操作
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class Demo02 {
public static void main(String[] args) {
File file = new File("b.txt");
OutputStream os = null;
try {
os = new FileOutputStream(file);
//写
String s = "hello world!";
os.write(s.getBytes());
System.out.println("成功写入");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
用字符流写文件
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
public class Demo05 {
public static void main(String[] args) {
//用字符流写文件
File file = new File("c.txt");
Writer writer = null;
try {
//拼接方式true 不拼接false
writer = new FileWriter(file,true);
String s = "你好!!!";
writer.write(s);
System.out.println("写入完毕");
} catch (IOException e) {
e.printStackTrace();
}finally {
if(writer !=null){
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
6.使用高层流读取文件
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
public class Demo06 {
public static void main(String[] args) {
// 使用高层流读取文件
File file = new File("a.txt");
Reader reader = null;
BufferedReader br = null;
try {
// 构造基础流
reader = new FileReader(file);
// 在基础流之上构造高层流
br = new BufferedReader(reader);
// 读到的一行
String line = null;
while ((line = br.readLine()) != null) {
System.out.println("读到: " + line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 先关闭高层流
if (br != null) {
try {
br.close();
} catch (Exception e) {
// TODO: handle exception
}
}
}
}
}
7.一些其他的操作方式
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo03 {
public static void main(String[] args) {
File f = new File("D:/java SE/15 文件IO/视频/06 文件夹的删除.avi");
if(f.mkdirs()){
System.out.println("成功!");
}else{
System.out.println("失败!");
}
try {
if(f.createNewFile()){
System.out.println("文件创建成功");
}else{
System.out.println("文件创建失败");
}
} catch (IOException e) {
e.printStackTrace();
System.out.println("文件创建异常");
}
}
public static void printFileInfo(File f){
// 文件名
System.out.println("文件名:" + f.getName());
// 文件路径
System.out.println("文件路径:" + f.getPath());
// 文件绝对路径
System.out.println("绝对路径:" + f.getAbsolutePath());
// 父文件夹名称
System.out.println("父文件夹:" + f.getParent());
// 文件是否存在
System.out.println(f.exists() ? "文件存在" : "文件不存在");
// 文件是否可写
System.out.println(f.canWrite() ? "文件可写" : "文件不可写");
// 文件是否可读
System.out.println(f.canRead() ? "文件可读" :"文件不可读");
// 文件是不是目录
System.out.println(f.isDirectory() ? "文件是目录" : "文件不是目录");
// 文件是不是文件
System.out.println(f.isFile() ? "文件是文件" : "文件不是文件");
// 路径是不是绝对路径
System.out.println(f.isAbsolute() ? "路径是绝对路径" : "路径不是绝对路径");
// 文件最后修改时间(人可以看懂)
long lastModified = f.lastModified();
SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String sTime = format.format(new Date(lastModified));
System.out.println("文件最后修改时间:" + sTime);
// 文件的大小
System.out.println("文件的大小:" + f.length());
}
}
——————— 本文来自 叁念 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/qq_36868342/article/details/76577758?utm_source=copy
版权声明:本文为匿名原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。