Java_IO流

四大模块:

InputStream:(字节流输入)
OutputStream:(字节流输出)
Reader:(字符流输入)
Writer:(字符流输出)

1、InputStream:
(1)FileInputStream
文件字节输入流
使用方法:
例1:

    FileInputStream in = new FileInputStream("E://Test.txt");

    int a = in.read();//读入一个字节数据

    a.close();

例2:读入多个字节数据

    FileInputStream in = new FileInputStream("E://Test.txt");
    
    byte[] byter = new byte[4];
    int a = in.read(byter);
    
    while(a!=-1) {
        
        System.out.print(new String(byter,0,a));
        System.out.println(a);
        a = in.read(byter);
    }
    in.close();

例3:异常捕获

 try(//try资源块,可以自动关闭in1文件流
	  FileInputStream in1 = new FileInputStream("E://Test.txt");
		){
		byte[] byter1 = new byte[4];
		int len = in1.read(byter1);
		while(len!=-1) {
			System.out.print(new String(byter1,0,len));
			System.out.println(len);
			a = in.read(byter1);
		}
	}catch(Exception e){
			e.printStackTrace();
		}

2、OutputStream
字节流输出
(1)ObjectOutputSteam
对象序列化,将对象储存在文件中
例1:

//对象序列化,将对象存储在文件中
Person p1 = new Person(18,"liu");
OutputStream out = new FileOutputStream("objectInput.txt");
ObjectOutputStream oos = new ObjectOutputStream(out);

oos.writeObject(p1);
oos.close();

(2)ObjectInputStream(父类为InputStream)
对象反序列化,读取文件中的对象
例1:

FileInputStream in = new FileInputStream("E:\\li\\Test2.txt");
ObjectInputStream ois = new ObjectInputStream(in);

Object obj = ois.readObject();
System.out.println(obj.toString());

注意:
每次在储存对象后,假如修改对象类的,那么反对象化会报错。

Exception in thread "main" java.io.InvalidClassException: shujujiegou.Person; 
local class incompatible: 
stream classdesc serialVersionUID = 7417176980331506136,
local class serialVersionUID = -8027723850310323071

原因是储存的对象serialVersionUID与本地的serialVersionUID不同产生的异常。
解决办法:
在创建Person类时加上固定的serialVersionUID值:

 private static final long serialVersionUID = -6849723424255257710L;

(3)PrintStream
打印字节流:在指定的地方的输出数据
例1:

PrintStream ps = new PrintStream(new FileOutputStream("E:\\li\\mo.txt"));

System.out.println("这是打印字节流");
ps.print("helloworld");
System.setOut(ps);//修改标准输出流,输出的位置

System.out.println("修改后的输出流");
	
ps.close();

3、Reader
字符流输入
(1)FileReader
文件字符输入流
使用方法:
例1:

        try(
				FileReader in_0 = new FileReader("C:\\Users\\Administrator\\Desktop\\myfile.txt");
				){
			int a = in_0.read();
			
			while(a!=-1) {
				System.out.print((char)a);
				a = in_0.read();
			}
		}catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}

(2)InputStreamReader
字节转换流:可以将字节流转换为字符流,可以指定读入文件编码方法
例1:

FileInputStream in = new FileInputStream(fileName);
		InputStreamReader inr = new InputStreamReader(in,"GBK");
		int a = inr.read();
		while(a!=-1) {
			System.out.print((char)a);
			a = inr.read();
		}
		in.close();
		inr.close();

(3)BufferedReader
字符缓冲输入流
文件–>缓冲区(8k字符缓冲区)–>程序
例1:

    FileReader in = new FileReader(fileName);
    BufferedReader br = new BufferedReader(in);
        		
    String a = br.readLine();
        		
    while(a!=null) {
    System.out.println(a);
    a = br.readLine();
       }
        		
    in.close();
    br.close();

例2:

 //键盘输入到文件中
BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\Test1.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String str = br.readLine();

while(str.length()>0) {
	bw.write(str);
	bw.newLine();
	str = br.readLine();
}

bw.close();
br.close();

4、Writer
字符流输出
(1)FileWriter
文件字符输出流
使用方法
例1:

FileWriter fw = new FileWriter("E:\\Test.txt");
fw.write("你");

fw.write("是谁");

char[] contents = "who are you?".toCharArray();
fw.write(contents);

fw.close();

(2)BufferedWriter
字符缓冲输出流:
程序–>缓冲区(8192字符缓冲区)–> 文件
例1:

FileWriter wri = new FileWriter("E:\\Test.txt",true);//在末尾添加的方式。
BufferedWriter bw = new BufferedWriter(wri);

bw.write("\nnnsss");
bw.flush();

bw.close();

(3)PrintWrite
打印字符流
例1:

PrintWriter pw = new PrintWriter(new FileWriter("E:\\li\\mo.txt"));

System.out.println("这是打印字符流");
pw.write("helloworld");

pw.close();

FIle类
读取文件内容使用IO流,操作文件/文件夹使用File类,如创建/遍历/删除文件夹,查看文件的相关属性等操作。
例1:输出指定路径的文件夹的绝对路径

File file = new File("E:\\");
File[] file_list = file.listFiles();

for (File file2 : file_list) {
	System.out.println(file2.getAbsolutePath());
}

例2:创建文件夹、创建文件

File f1 = new File("E:\\li\\li_1");
f1.mkdir();//创建文件夹
File f2 = new File("E:\\li\\li_1","test.txt");
f2.createNewFile();//创建文件test.txt
内容概要:本文深入探讨了Kotlin语言在函数式编程和跨平台开发方面的特性和优势,结合详细的代码案例,展示了Kotlin的核心技巧和应用场景。文章首先介绍了高阶函数和Lambda表达式的使用,解释了它们如何简化集合操作和回调函数处理。接着,详细讲解了Kotlin Multiplatform(KMP)的实现方式,包括共享模块的创建和平台特定模块的配置,展示了如何通过共享业务逻辑代码提高开发效率。最后,文章总结了Kotlin在Android开发、跨平台移动开发、后端开发和Web开发中的应用场景,并展望了其未来发展趋势,指出Kotlin将继续在函数式编程和跨平台开发领域不断完善和发展。; 适合人群:对函数式编程和跨平台开发感兴趣的开发者,尤其是有一定编程基础的Kotlin初学者和中级开发者。; 使用场景及目标:①理解Kotlin中高阶函数和Lambda表达式的使用方法及其在实际开发中的应用场景;②掌握Kotlin Multiplatform的实现方式,能够在多个平台上共享业务逻辑代码,提高开发效率;③了解Kotlin在不同开发领域的应用场景,为选择合适的技术栈提供参考。; 其他说明:本文不仅提供了理论知识,还结合了大量代码案例,帮助读者更好地理解和实践Kotlin的函数式编程特性和跨平台开发能力。建议读者在学习过程中动手实践代码案例,以加深理解和掌握。
内容概要:本文深入探讨了利用历史速度命令(HVC)增强仿射编队机动控制性能的方法。论文提出了HVC在仿射编队控制中的潜在价值,通过全面评估HVC对系统的影响,提出了易于测试的稳定性条件,并给出了延迟参数与跟踪误差关系的显式不等式。研究为两轮差动机器人(TWDRs)群提供了系统的协调编队机动控制方案,并通过9台TWDRs的仿真和实验验证了稳定性和综合性能改进。此外,文中还提供了详细的Python代码实现,涵盖仿射编队控制类、HVC增强、稳定性条件检查以及仿真实验。代码不仅实现了论文的核心思想,还扩展了邻居历史信息利用、动态拓扑优化和自适应控制等性能提升策略,更全面地反映了群体智能协作和性能优化思想。 适用人群:具备一定编程基础,对群体智能、机器人编队控制、时滞系统稳定性分析感兴趣的科研人员和工程师。 使用场景及目标:①理解HVC在仿射编队控制中的应用及其对系统性能的提升;②掌握仿射编队控制的具体实现方法,包括控制器设计、稳定性分析和仿真实验;③学习如何通过引入历史信息(如HVC)来优化群体智能系统的性能;④探索中性型时滞系统的稳定性条件及其在实际系统中的应用。 其他说明:此资源不仅提供了理论分析,还包括完整的Python代码实现,帮助读者从理论到实践全面掌握仿射编队控制技术。代码结构清晰,涵盖了从初始化配置、控制律设计到性能评估的各个环节,并提供了丰富的可视化工具,便于理解和分析系统性能。通过阅读和实践,读者可以深入了解HVC增强仿射编队控制的工作原理及其实际应用效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值