您的位置:首页 > 编程语言 > Java开发

Java IO流使用,socket基础

2016-06-22 08:52 337 查看
工作内容:

1.学习异常
2..学习IO流
成果分享:

1.培训分享:

字节流和字符流的区别:
字节流:每次读取8位
字符流:每次读取16位
两者的操作形式一样,功能也一样。
区别:字节流没有使用到缓冲区,而是直接操作输出的,而字符流使用到了缓冲区,是通过缓冲区操作输出的
何时使用:
实际中很多的数据是文本,所以提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进行字符集的转化;除了处理文本,其他的都是用字节流比较方便,例如:图片、电影都是字节保存的。
转换流:
在整个IO包中,除了字节和字符流之外,还包含了一种称为转换流的流,可以将一个字节流变为字符流,也可以将一个字符流变为字节流,主要使用以下的两个类完成:
OutputStreamWriter:可以将输出的字符流变为字节流的输出形式
InputStreamReader:将输入的字节流变为字符流输入形式
 
内存操作流:
ByteArrayOutputStream来完成输入输出功能了。
ByteArrayInputStream主要功能是将内容写入到内存之上
ByteArrayOutputStream主要功能是将内容从内存中的数据输出
随机访问文件流:
随机访问文件流,自身具备读写的方法。
通过skipBytes(int x),seek(int x)来达到随机访问。
注意:用RandomAccessFile来操作文件的时候,由于对占两个字节的字符可能出现截断的情况,所以只建议操作字节型文件。
字符编码:
字符流的出现为了方便操作字符。
更重要是的加入了编码转换。
通过子类转换流来完成。
InputStreamReader
<
4000
span style="font-size:14px;">OutputStreamWriter
在两个对象进行构造的时候可以加入字符集。
实例:

import java.io.File;

/*
* 列出目录下的全部文件名称
* 文件名输出 \t后
* */
public class ListAllFileName {
public static void main(String[] args) {
ListAllFileName demo = new ListAllFileName();
File file = new File("f:" + File.separator + "Demo");
demo.listAllFileName(file);
}

public void listAllFileName(File file) {
if (file.exists()) {
if (file.isFile()) {
System.out.println("\t" + file.getName());
} else if (file.isDirectory()) {
System.out.println(file.getName());
File list[] = file.listFiles();
for (int i = 0; i < list.length; i++) {
listAllFileName(list[i]);
}
}
} else {
System.out.println("文件路径不存在,或文件不存在");
}
}
}


2.自学分享:

学习socket的基础使用

涉及类:

ServerSocket:服务器端

System.out.println("服务器已经上线");
ServerSocket server = new ServerSocket(5000)//port是自己定义的端口号[在这里写的是5000]:0-65535,最好不要靠太前面(可能已经被占用)
Socket socket = server.accept();//如果没有客户端链接会被堵塞[并且不会往后执行],有客户端链接的时候,会继续往后执行
//客户端链接了以后,服务器端就可以向客户端发送信息了。。。
OutputStreamWriter dos = new DataOutputWriter(socket.getOutputStream);//获取一个输出流
dos.write("[系统消息]欢迎上线");//把服务器端信息写入流,这时可以在客户端通过getInputStream来获得这个流写入的内容
dos.close();
server.close();
//这时已经完成了一个客户的链接
Socket:客户端
Socket client = new Socket("127.0.0.1",5000);//本机做服务器可以用“127.0.0.1”
//到这里已经链接到了服务器端
InputStreamReader dis = new DataInputReader(client.getInputStream);//这里的dis读取到的信息将是在服务器端写入的信息
String str = null;
while((str = dis.readLine) != null){
System.out.println(str);
}
dis.close();
//到这里就结束了本次链接,并没有向服务器端发送信息哈
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: