输入输出流和多线程

	/**	利用字节输出流往文件中写东西
	 * 	//按照数据处理单元划分----字节流--字节输入流 InputStream基类   // 字节流是8位通用字节流  //抽象类
	 * 	
	 * 
	 * InputStream (抽象类)
	 * 		read()
	 * 		read(byte[] b)
	 * 		read(byte[],off,len)
	 * 		close()
	 * 
	 * FileInputStream
	 * 		new FileInputStream(File file)
	 * 		new FileInputStream(String path)
	 * 
	 * 
	 * 字节输出流(写)
	 * 		OutputStream (抽象类) //输出流都有flush()
	 * 			write(int)
	 * 			write(byte[] b)
	 * 			write(byte[],off,len);
	 * 			close()
	 * 			flush():强制将缓冲区清空
	 * 		FileOutputStream
	 * 			new FileOutputStream(File file)
	 * 			new FileOutputStream(String path)
	 * 			new FileOutputStream(String path,boolean append):可以指定或追加文件覆盖的内容    //输出流后面都有true
	 */
			
/**  
 *  字节输入流: 一个字节一个字节的读
	 *InputStream 抽象类
	 *int read():
		 *一个字节一个字节的读,返回该字节的整数表示形式,如果到了输入流末尾,返回-1
	 *int read(byte[])
		 *从输入流读取若干字节,把这些字节保存到数组b中,返回的是读取到的字节数(也是数组的长度),如果到了输入流的末尾,返回-1
	 *int read(byte [] b,int off,int len):
		 *从输入流读取若干字节,把这些字节保存到数组b中,off指的是字节数组中开始保存数据的起始下标,len指读取的字节数目。
		 *返回的是读取到的字节数,如果到了输入流的末尾,返回-1
	 *
	 *void close()
	 *int available():可以从输入流中读取的字节数目
	 *
	 *FileInputStream   //实现类
	 *FileInputStream(File file)
	 *FileInputStream(String name)
	 **/
	 //字符
	 	 *  字符输入流:一个字符一个字符的读(char)
 *  //int read()
 *  //int read(char[])
 *  //int read(char [] b,int off,int len):
 * Reader 				父
 * InputStreamReader	子(包一个字节输入流) new InputStreamReader(一个Reader,charSet字符集); // 指定编码格式
 * FileReader			孙子
 * 
 * BufferedReader 一行一行的读 while((line=bd.readLine())!=null)  ,括号内包一个Reader
 */
	/**
	 * 	字符输出流 -- 输出流要清空(flush)
	 * 
	 * Writer 
	 * 		write(String)
	 * 		close()
	 * 		flush():清空缓存
	 * 
	 * OutputStreamWriter:可以指定字符编码格式,包一个字节流
	 * 		new OutputStreamWriter(FileOutputStream)
	 * 		new OutputStreamWriter(FileOutputStream,String charSetName)
	 * FileWriter 以下两种构造,都可以重载,指定一个boolean类型的参数,用来指定追加还是覆盖文件内容
	 * 		new FileWriter(File file,true)
	 * 		new FileWriter(String path,true)
	 */
	 ![String的replace()](https://img-blog.csdnimg.cn/2eab68cf24da4622a0704a8f5f705faf.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAQkFST044ODg3OA==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)

File类常用方法

二进制流:InputStreamOutputStream
二级制文件 :DataInputStreamDataOutputStream,,包一个FileInputStreamFileOutputStreamnew  DataInputStream(FileInputStream  ))
序列化和反序列化: 
ObjectInputStream 		反序列化	从二进制文件生成程序是反序列化
ObjectOutputStream   序列化 从程序生成二进制文件是序列化

需要序列化的类要实现 Serializable接口, 不想要被序列化的属性 需要被 关键字 transient 修饰

///多线程
Thread t =  Thread.currentThread();//获取当前线程
System.out.println(t.getName());  // 打印线程名字
t.setName("主线程"); //通过set方法改变名字

线程执行任务的功能方法是在run()里
main方法里启动子线程是子线程对象.start();

MyThread1 m1 = new MyThread1();
		//m线程直接调用Main方法,相当于主线程直接执行run方法,不是线程自己启动,不是多线程
		//m.run();

//实现线程的两种方法
//1.继承Thread类,重写run
//2.一个类实现Runnable接口重写run方法, 把这个类放到Thread()的构造方法中(new Thread(new 实现Runnable方法的类)),然后start
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java是一门流行的编程语言,具有强大的输入输出(I/O)和多线程支持。在本文中,我们将讨论如何在Java中进行输入输出和多线程编程。 输入输出 在Java中进行输入输出通常需要使用Java I/O库。这个库包含了各种类和方法,可以帮助我们进行文件读写、网络通信、控制台输入输出等操作。 文件读写 在Java中,我们可以使用FileInputStream和FileOutputStream类来读写文件。这两个类都是字节流类,可以读写任何类型的文件。 读取文件示例: ```java try (FileInputStream fileInputStream = new FileInputStream("input.txt")) { int data; while ((data = fileInputStream.read()) != -1) { System.out.print((char) data); } } catch (IOException e) { e.printStackTrace(); } ``` 写入文件示例: ```java try (FileOutputStream fileOutputStream = new FileOutputStream("output.txt")) { String data = "Hello world!"; fileOutputStream.write(data.getBytes()); } catch (IOException e) { e.printStackTrace(); } ``` 控制台输入输出 在Java中,我们可以使用System.in和System.out来进行控制台输入输出。这两个对象都是标准输入输出流,可以帮助我们读取用户输入,以及输出结果给用户。 读取用户输入示例: ```java Scanner scanner = new Scanner(System.in); System.out.print("Enter your name: "); String name = scanner.nextLine(); System.out.println("Hello, " + name + "!"); ``` 输出结果给用户示例: ```java System.out.println("Hello, world!"); ``` 多线程Java中,我们可以通过创建线程来实现多线程编程。Java提供了Thread类,可以帮助我们创建一个新的线程,并且启动它去执行某个任务。 创建线程示例: ```java Thread thread = new Thread(() -> { // 线程任务 }); thread.start(); ``` 在Java中,也可以使用ExecutorService和Future接口来实现更高级的多线程编程。ExecutorService可以帮助我们管理线程池,并且执行任务。Future接口可以帮助我们获取线程执行的结果。 创建线程池示例: ```java ExecutorService executorService = Executors.newFixedThreadPool(10); ``` 执行任务示例: ```java Future<String> future = executorService.submit(() -> { // 线程任务 return "Hello, world!"; }); String result = future.get(); ``` 以上是Java中输入输出和多线程编程的简单介绍。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值