关于java中流的使用--文件以及socket

个人感觉,流是java中不同设备之间交换数据的媒介,例如socket中数据的传输,以及文件的读写操作等,都是通过流来实现的.

流的种类

从处理的数据类型上来看,流主要分为字符流(InputStream, OutputStream)和字节流(Reader, Writer),而从功能上来看,主要分为输入流以及输出流.

文件的读写

  1. File file =newFile(".\\test.txt");
  2. //参数true:表示在文件后边追加内容
  3. FileOutputStream fileOutputStream =newFileOutputStream(file,true);
  4. FileInputStream fileInputStream =newFileInputStream(file);
  5. //装饰者模式,使用带缓冲的输入流
  6. BufferedInputStream bufferedInputStream =newBufferedInputStream(fileInputStream);
  7. //使用byte,字节流读取文件中的内容
  8. byte[]b =newbyte[100];
  9. bufferedInputStream.read(b);
  10. Stringstring=newString(b,"UTF-8");
  11. System.out.println(string);
  12. //使用字符流读取文件中的内容
  13. BufferedReader bufferedReader =newBufferedReader(inputStreamReader);
  14. System.out.println(bufferedReader.readLine());
  15. //写入文件
  16. OutputStreamWriter outputStreamWriter =newOutputStreamWriter(fileOutputStream);
  17. outputStreamWriter.write("jjjjjjjjjjjjjjjjjjjd我们哈哈哈哈哈");
  18. BufferedOutputStream bufferedOutputStream =newBufferedOutputStream(fileOutputStream);
  19. bufferedOutputStream.flush();
  20. Stringstring="我们进顶顶顶顶顶顶顶顶顶大大大";
  21. byte[]b =string.getBytes("UTF8");
  22. bufferedOutputStream.write(b);
  23. bufferedOutputStream.close();

socket使用

Server

  1. publicclassTcpServer{
  2. publicstaticvoid main(String[] args)throwsIOException{
  3. // TODO Auto-generated method stub
  4. String getString;
  5. String sendString;
  6. ServerSocket socket =newServerSocket(6789);
  7. while(true){
  8. Socket connection = socket.accept();
  9. BufferedReader reader =newBufferedReader(newInputStreamReader(connection.getInputStream()));
  10. DataOutputStream outputStream =newDataOutputStream(connection.getOutputStream());
  11. getString = reader.readLine();
  12. sendString = getString.toUpperCase()+"\n";
  13. outputStream.writeBytes(sendString);
  14. }
  15. }
  16. }

Client

  1. publicclassTcpClient{
  2. publicstaticvoid main(String[] args)throwsUnknownHostException,IOException{
  3. String sendString;
  4. String getString;
  5. System.out.println("start connection");
  6. Socket socket =newSocket("127.0.0.1",6789);
  7. System.out.println("connect successfully");
  8. DataOutputStream outputStream =newDataOutputStream(socket.getOutputStream());
  9. BufferedReader fromServer =newBufferedReader(newInputStreamReader(socket.getInputStream()));
  10. sendString ="send to server from tcpclient";
  11. outputStream.writeBytes(sendString +"\n");
  12. getString = fromServer.readLine();
  13. InputStreamin= socket.getInputStream();
  14. byte[] b =newbyte[100];
  15. in.read(b);
  16. Stringstring=newString(b,"UTF-8");
  17. System.out.println(b);
  18. socket.close();
  19. }
  20. }

来自为知笔记(Wiz)

时间: 2024-10-10 04:27:08

关于java中流的使用--文件以及socket的相关文章

java UDP聊天与文件传输

package rgy.com.UDP3; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.io.File; import java.io.Fil

Java NIO实现非阻塞式socket通信

博主知识水平有限,只能提供一个个人的狭隘的理解,如果有新人读到这儿,建议看一下其他教程或者API,如果不明白,再来看一下:如果有dalao读到这儿,希望能指出理解中的问题~谢谢 Java提供了用于网络通信的socket和serversocket包,然而实现方式是阻塞式的,同一时间点上只能进行一个连接,这会带来不好的体验.当然了,我们也可以通过不断创建线程的方式管理连接,但线程多了的话反而会降低效率.于是Java推出了非阻塞式IO--channel.并且channel提供关于网络通信的相关chan

五种方式让你在java中读取properties文件内容不再是难题

一.背景 最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,修改变量,不再需要修改代码的问题.就借此机会把Spring+SpringMVC+Mybatis整合开发的项目中通过java程序读取properties文件内容的方式进行了梳理和分析,先和大家共享. 二.项目环境介绍 Spring 4.2.6.RELEASE SpringMvc 4.2.6.RELEASE Mybatis 3.2.8 Maven 3.3.9 Jdk 1.7 Id

Java:IO流与文件基础

Java:IO流与文件基础 说明: 本文所有内容包含图片均为MrSaber自己编写,转载请练习我哦. 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象称作 输入流,可以向其中写入一个字节序列的对象称作 输出流. ? 这些字节序列的来源可以是:文件.网络连接.内存块等. ? 抽象类InputStream和OutputStream是构成输入/输出(I/O)的基础. ? 因为面向字节的流

Java的RandomAccessFile对文件内容进行读写

 RandomAccessFile是Java提供的对文件内容的访问,她既可以读文件,也可以写文件,并且RandomAccessFile支持随机访问文件,也就是说他可以指定位置进行访问.   我们知道Java的文件模型,文件硬盘上的文件是byte byte byte的字节进行存储的,是数据的集合.下面就是用这个类的步骤. (1)打开指定的文件,有两种模式“rw”(读写) “r”(只读),创建对象,并且指定file和模式,例如:       RandomAccessFile ac=new Rando

java中IO写文件工具类

下面是一些根据常用java类进行组装的对文件进行操作的类,平时,我更喜欢使用Jodd.io中提供的一些对文件的操作类,里面的方法写的简单易懂. 其中jodd中提供的JavaUtil类中提供的方法足够我们使用,里面的方法写的非常简练,例如append,read等方法,封装更好,更符合面向对象, 这里面我写的一些方法可多都是模仿jodd,从里面进行抽取出来的. /** * 获取路径文件夹下的所有文件 * @param path * @return */ public static File[] ge

JFileChooser (Java Swing提供的文件选择对话框)

JFileChooser() 构造一个指向用户默认目录的 JFileChooser. JFileChooser(File currentDirectory) 使用给定的 File 作为路径来构造一个 JFileChooser. setFileSelectionMode(int mode) 设置 JFileChooser,以允许用户只选择文件.只选择目录,或者可选择文件和目录. mode参数:FILES_AND_DIRECTORIES   指示显示文件和目录. FILES_ONLY        

java并发读&写文件

最近在看Brian Goetz 的<<Java并发实战>>,这本书有两个版本,电子工业出版社的译本很糟糕,建议使用机械工业出版社出版出版的书籍. 在看到第三四章的时候突然想到了多线程读写文件,同时遇到一些书中没有的问题 1, 如何保证组合对象的安全性? 2, 如何判断不变性的约束条件 3, 如何不通过synchronized关键字和锁进行同步处理? 下面是一段代码, 用来从source 读取数据,通过多线程写入target文件中 思路: 1, 如何read/write文件? 2,

[转]java将字符串写入文件中

Java代码   import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.PrintStream; import java.io.PrintWriter; import java.io.RandomAccessFile; publi