看到本文标题也许要奇怪了,Python 的 print 难道不是也上可以看到结果的吗?在 Python shell 下只要>> print('Hello world!')
不就立马能看到控制台输出的 "Hello world!" 吗。或者是一个 Python 脚本文件 hello.py
Hello world!import time
然后执行
for i in range(3):
print('Hello {}'.format(i))
time.sleep(3)python hello.py的话,我们也同样能看到在控制台下在预定的每 3 秒输出一行Hello 0
但执行下面的命令试图重定向输出到文件时的效果就不一样了 Read More
Hello 1
Hello 2- 在 vi 中打开过多个文件时,每个文件都是存放在各自的 buffer 中,可以用命令 ls (buffers 或 files,三个命令中拣你最喜欢的一个即可,ls 输入方便,buffers/files 更表意) 显示所有的 buffer。显示出来的结果如下:

可以看到
每个 Buffer 的编号,分别是 1, 4, 5, 6
% 表示的是当前窗口中的 Buffer
+ 表该 Buffer 中的内容有修改
Buffer 中的文件名称 Read More 对于 NIO 来说,Channel(通道) 和 Buffer(缓冲区) 这两个东西是不得不提的,因为它们是 NIO 的核心对象,几乎每一个 I/O 操作都要它们。
通道是对原 I/O 流的模拟,但有不同的是它是双向的,不再像流那样分 InputStream 和 OutputStream,通道的双向性更好的反映了底层操作系统的真识情况。也不能像原 I/O 那样可以直接往流里写或读数据,在通道了传输数据必须经由缓冲区。有点类似原 I/O 流通过过滤器流 BufferedInputStream 和 BufferedOutputStream 来读写数据。
FileInputStream/FileOutputStream/RandomAccessFile/DatagramSocket/ServerSocket/Socket 的 getChannel() 方法可以获得相应类型的 Channel,Channel 的类型有 FileChannel/SocketChannel/SelectableChannel/DatagramChannel/ServerSocketChannel 等。 Read More