I/O文件流
文件流读写是最常见的I/O操作,通过文件流来连接磁盘文件,从而读写文件内容。
-
文件读写三个步骤:1. 打开文件输入或者输出流
2. 文件读或写操作
3. 关闭文件输入(出)流
通过文件系统中的File对象指定。
-
标准的输入与输出:1. 标准输出:println() ; write() ;
2. 标准输入:System.in ; 可以通过调用read()方法来实现从键盘读入数据的功能。
-
标准输入的组合包装:通过引入InputStreamRreader和BufferedReader类的对象对其进行
两次包装 (第一次System.in对象包装为reader对象的内嵌成员,第二次又将reader
对象包装为input对象的成员) , 这样,就可以使用BufferedReader类提供的
readLine()方法,实现以行为单位的字符串输入功能,当获取字符串数据后,
还可以根据具体的数据类型进行相应转换。
package src;
import java.io.*;
public class Test1
{
public static void main(String[] args) throws IOException
{
String temp;
float f;
double d;
int i;
InputStreamReader reader=new InputStreamReader(System.in);//将System.in对象包装入InputStreamReader对象中
BufferedReader input=new BufferedReader(reader);//将reader对象包装入BufferedReader对象中
//Scanner input=new Scanner(System.in);//Scanner类更简洁
System.out.println("请输入字符串数据:");
temp=input.readLine();
System.out.println("刚输入的字符串为:"+temp);
System.out.println("请输入单精度浮点数:");
temp=input.readLine();
f = Float.parseFloat(temp); //字符串转换为单精度浮点型
System.out.println("刚输入的单精度浮点数为:"+f);
System.out.println("请输入双精度浮点数:");
temp=input.readLine();
d = Double.parseDouble(temp); //字符串转换为双精度浮点型
System.out.println("刚输入的单精度浮点数为:"+d);
System.out.println("请输入int整型数:");
temp=input.readLine();
i = Integer.parseInt(temp); //字符串转换为int型
System.out.println("刚输入的int整型数为:"+i);
}
}
---------------------------
package IOinputStream;
import java.io.*;
public class Test2
{
//键盘写值,然后写进文件里面
public static void main(String[] args)
{
try
{
InputStreamReader fin = new InputStreamReader(System.in);//将System.in对象包装入InputStreamReader对象中
BufferedReader in = new BufferedReader(fin); //将fin对象包装入BufferedReader对象中
//Scanner in=new Scanner(System.in);//Scanner类更简洁
FileWriter fout = new FileWriter("outdata.dat");
BufferedWriter out = new BufferedWriter(fout);
System.out.println("input:");
String str = in.readLine();
while(!(str.equals("#")))
{
out.write(str);
out.newLine(); //写入一个行分隔符。
str = in.readLine();
}
in.close();
fin.close();
out.close();
fout.close();
}
catch(IOException e)
{ e.printStackTrace(); }
}
}
-
文件目录:
使用File类的构造方法创建File类的对象,因此File类对象可以表示一个磁盘文件,也可以表示某个目录。
1. 相对路径:getPate();
2. 绝对路径:getAbsoutepath();
3. 父目录:getparent();
4. 删除路径名抽象路径名表示的文件:renameTo();
package src;
import java.io.File;
public class Getfilepath
{
public static void main(String[] args)
{
File f=new File("mp3\\1.mp3");
System.out.println("相对路径:"+f.getPath());
System.out.println("绝对路径:"+f.getAbsolutePath());
System.out.println("父目录:"+f.getParent());
}
}
----------------------
//复制
package src;
import java.io.*;
public class BigFileCopy
{
public static void main(String[] args) throws IOException
{
//BufferedInputStream类只是在FilterInputStream类(或者说InputStream类)的基础上添加了一个读取缓冲功能, //在读取大文件时速度很快
FileInputStream fin=new FileInputStream("1.mp3");
BufferedInputStream in =new BufferedInputStream(fin);
FileOutputStream fout=new FileOutputStream("2.mp3");
BufferedOutputStream out=new BufferedOutputStream(fout);
int c;
while ((c=in.read())!=-1)
out.write(c);
System.out.print("Copy完成!");
in.close();
out.close();
}
}
-------------------------------
package src;
//创建文件File 然后写入文件
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CreatFile
{
public static void main(String[] args) throws IOException
{
File f=new File("file.txt");
f.createNewFile();
FileWriter fout=new FileWriter(f);
String str="abcdefg";
fout.write(str);
fout.close();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?