导航:首页 > 编程语言 > iojava

iojava

发布时间:2022-02-06 19:29:54

java中的import java.io.*是什么意思 io具体又是什么意思

import java.io.* 这个是引用包import java.io.*这个的意思而IO则是输入输出流的意思,也就是inputStream,和outputStream这些类的

❷ java中什么是IO流

理解Java的IO流,首答先要把视角放在内存上,而不是放在文件上。
InputStream是用来写入的没错,但不是写入文件中,而是写入内存中。所以InputStream的作用是从文件中读取数据然后写入内存中或者说写入到正在运行的程序中。
而OutputStream同理,是从内存/程序中将数据推送出去,把数据保存到文件中。
以Java程序作为主视角,你就能懂了。Input读取是为了读给程序用,Output写出是程序把数据输出到硬盘上了。

❸ java中io的用法

java中关于io流,最终操作还是最底层的InputStream和OutputStream
其它的对象如FileoutPutStream,或者DateoutputStream只是对OutputStream进行封装,有的是为了方便操作有的是为了加快速度
例如DateoutputStream是为了操作的方便,它实现ObjectOutput接口,可以将某些java的数据类型直接写到文件或者请求中,然后又可以直接取出来,而不用读了过后解析
例如读了两字节,转成String再判断如果是数字则强转成int,这里面就可以直接readInt()相当于一层封装,还是用了inputString和outputStream,如果你研究一下序列化与反序列化(ObjectOutputStream,ObjectInputStream)你的感受会更深,因为它可以直接将一个对象写入文件或者请求中,然后读的时候直接就可以读出来,这样用起来非常方便
所以dos=new DataoutputStream(new FileOutputStream(tempfile));
FileOutputStream是将流写入文件,而DataoutputStream则是为了方便将java基本数据类型直接写到文件里面,与直接用FileoutPutStream区别就在于读该文件的时候前者可以直接读出int等数据类型,而后者你需要读了字节流然后自己解析,得到你想要的值
还有的就是为了加快速度如BufferedInputStream和BufferedOutputStream两者就是运用缓存,存了多个字节后一次性写入或者读出,这样加快了读写速度。

至于文件编码,则是在写的时候如果你没设编码则按系统默认编码来写,字节存储格式和长度不一样,这些应该在读文件或者写的时候就设置好,不论是以字节写还是以字符写,流已经被编码过了

❹ java中的IO

import java.io.*;
import java.util.*;
class Test{
private String filename="";

public void writerFile(String filename)throws Exception{
this.filename=filename;
File file=new File(filename);
PrintStream print=new PrintStream(file);
Scanner scanner=new Scanner(System.in);
String in="";
String exit="quit";
System.out.println("开始接收输入\n");
do{
in=scanner.nextLine();
if(in.toLowerCase().equals(exit)) break;
print.println(in);
}while(true);
scanner.close();
print.close();
return;
}

public void TheFile(String newFilename)throws Exception{

List<String> list=new ArrayList<String>();
String oldFilename=this.filename;
File oldFile=new File(oldFilename);
File newFile=null;
Scanner scanner=new Scanner(oldFile);
PrintStream print=null;
newFile=new File(newFilename);
print=new PrintStream(newFile);
while(scanner.hasNextLine()){
list.add(scanner.nextLine());
}
for(int i=list.size()-1;i>=0;i--){
print.println((String)list.get(i));
}
scanner.close();
print.close();
return;

}
public static void main(String[] str)throws Exception{
Test t=new Test();
String newFilename="2.txt";
t.writerFile("1.txt");
Scanner theFilename=new Scanner(System.in);

t.TheFile(newFilename);

}
}

❺ 出现java.io.IOException是怎么回事

根据报错信息可知是因为权限错误导致,解决办法有以下几种:

1.在androidMainfest.xml中添加:

<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAG”/>权限;

2.如果还不行的时候可以试着在AndroidMainfest.xml中添加:

<usespermissionandroid:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> 权限;

3.注意AndroidMainfest.xml文件中权限的书写位置:应该和<application>标签节点同一级,而不要写到<application>标签中,这样权限是不会生效的;

4.还有一种异常是我在查资料的时候发现的,有的手机在以磁盘模式连接电脑的时候,手机会暂时失去对sdcard/外存的读写权限,这时打开手机app就会发生这个权限异常IOException。

❻ 请问Java中的io是什么意思呀

io--InputStream,outputStream,是输入流、输出流的意思

❼ JAVA IO中的IO是什么意思

I是Input,O是Output,IO就是输入与输出,Java的输入机制允许程序读取外部数据,输出机制允许程序将程序数据输出到外部存储设备

❽ Java NIO和IO的区别

JavaNIO和IO之间的主要差别,我会更详细地描述表中每部分的差异。
IONIO
面向流面向缓冲
阻塞IO非阻塞IO
无选择器
面向流与面向缓冲
JavaNIO和IO之间第一个最大的区别是,IO是面向流的,NIO是面向缓冲区的。JavaIO面向流意味着每次从流中读一个或多个字节,直至读取所有字节,它们没有被缓存在任何地方。此外,它不能前后移动流中的数据。如果需要前后移动从流中读取的数据,需要先将它缓存到一个缓冲区。JavaNIO的缓冲导向方法略有不同。数据读取到一个它稍后处理的缓冲区,需要时可在缓冲区中前后移动。这就增加了处理过程中的灵活性。但是,还需要检查是否该缓冲区中包含所有您需要处理的数据。而且,需确保当更多的数据读入缓冲区时,不要覆盖缓冲区里尚未处理的数据。
阻塞与非阻塞IO
JavaIO的各种流是阻塞的。这意味着,当一个线程调用read()或write()时,该线程被阻塞,直到有一些数据被读取,或数据完全写入。该线程在此期间不能再干任何事情了。JavaNIO的非阻塞模式,使一个线程从某通道发送请求读取数据,但是它仅能得到目前可用的数据,如果目前没有数据可用时,就什么都不会获取。而不是保持线程阻塞,所以直至数据变的可以读取之前,该线程可以继续做其他的事情。非阻塞写也是如此。一个线程请求写入一些数据到某通道,但不需要等待它完全写入,这个线程同时可以去做别的事情。线程通常将非阻塞IO的空闲时间用于在其它通道上执行IO操作,所以一个单独的线程现在可以管理多个输入和输出通道(channel)。
选择器(Selectors)
JavaNIO的选择器允许一个单独的线程来监视多个输入通道,你可以注册多个通道使用一个选择器,然后使用一个单独的线程来“选择”通道:这些通道里已经有可以处理的输入,或者选择已准备写入的通道。这种选择机制,使得一个单独的线程很容易来管理多个通道。
NIO和IO如何影响应用程序的设计
无论您选择IO或NIO工具箱,可能会影响您应用程序设计的以下几个方面:
1.对NIO或IO类的API调用。
2.数据处理。
3.用来处理数据的线程数。
API调用
当然,使用NIO的API调用时看起来与使用IO时有所不同,但这并不意外,因为并不是仅从一个InputStream逐字节读取,而是数据必须先读入缓冲区再处理。
数据处理
使用纯粹的NIO设计相较IO设计,数据处理也受到影响。
在IO设计中,我们从InputStream或Reader逐字节读取数据。假设你正在处理一基于行的文本数据流,例如:
Name:Anna
Age:25
Email:[email protected]
Phone:1234567890
该文本行的流可以这样处理:
BufferedReaderreader=newBufferedReader(newInputStreamReader(input));

StringnameLine=reader.readLine();
StringageLine=reader.readLine();
StringemailLine=reader.readLine();
StringphoneLine=reader.readLine();
请注意处理状态由程序执行多久决定。换句话说,一旦reader.readLine()方法返回,你就知道肯定文本行就已读完,readline()阻塞直到整行读完,这就是原因。你也知道此行包含名称;同样,第二个readline()调用返回的时候,你知道这行包含年龄等。正如你可以看到,该处理程序仅在有新数据读入时运行,并知道每步的数据是什么。一旦正在运行的线程已处理过读入的某些数据,该线程不会再回退数据(大多如此)。下图也说明了这条原则:
(JavaIO:从一个阻塞的流中读数据)而一个NIO的实现会有所不同,下面是一个简单的例子:
ByteBufferbuffer=ByteBuffer.allocate(48);

intbytesRead=inChannel.read(buffer);
注意第二行,从通道读取字节到ByteBuffer。当这个方法调用返回时,你不知道你所需的所有数据是否在缓冲区内。你所知道的是,该缓冲区包含一些字节,这使得处理有点困难。
假设第一次read(buffer)调用后,读入缓冲区的数据只有半行,例如,“Name:An”,你能处理数据吗?显然不能,需要等待,直到整行数据读入缓存,在此之前,对数据的任何处理毫无意义。
所以,你怎么知道是否该缓冲区包含足够的数据可以处理呢?好了,你不知道。发现的方法只能查看缓冲区中的数据。其结果是,在你知道所有数据都在缓冲区里之前,你必须检查几次缓冲区的数据。这不仅效率低下,而且可以使程序设计方案杂乱不堪。例如:
ByteBufferbuffer=ByteBuffer.allocate(48);

intbytesRead=inChannel.read(buffer);

while(!bufferFull(bytesRead)){

bytesRead=inChannel.read(buffer);

}
bufferFull()方法必须跟踪有多少数据读入缓冲区,并返回真或假,这取决于缓冲区是否已满。换句话说,如果缓冲区准备好被处理,那么表示缓冲区满了。
bufferFull()方法扫描缓冲区,但必须保持在bufferFull()方法被调用之前状态相同。如果没有,下一个读入缓冲区的数据可能无法读到正确的位置。这是不可能的,但却是需要注意的又一问题。
如果缓冲区已满,它可以被处理。如果它不满,并且在你的实际案例中有意义,你或许能处理其中的部分数据。但是许多情况下并非如此。下图展示了“缓冲区数据循环就绪”:
3)用来处理数据的线程数
NIO可让您只使用一个(或几个)单线程管理多个通道(网络连接或文件),但付出的代价是解析数据可能会比从一个阻塞流中读取数据更复杂。
如果需要管理同时打开的成千上万个连接,这些连接每次只是发送少量的数据,例如聊天服务器,实现NIO的服务器可能是一个优势。同样,如果你需要维持许多打开的连接到其他计算机上,如P2P网络中,使用一个单独的线程来管理你所有出站连接,可能是一个优势。一个线程多个连接的设计方案如
JavaNIO:单线程管理多个连接
如果你有少量的连接使用非常高的带宽,一次发送大量的数据,也许典型的IO服务器实现可能非常契合。下图说明了一个典型的IO服务器设计:

JavaIO:一个典型的IO服务器设计-一个连接通过一个线程处理

阅读全文

与iojava相关的资料

热点内容
数学奇迹神奇运算法 浏览:359
大厂的程序员的水平如何 浏览:700
遗传算法入门经典书籍 浏览:878
源码炮台脚本 浏览:620
在位编辑命令 浏览:347
曲式分析基础教程pdf 浏览:14
php生成静态html页面 浏览:964
怎么分割pdf 浏览:812
压缩垃圾报警器 浏览:629
小公司一般都用什么服务器 浏览:968
java获取时间gmt时间 浏览:820
为什么csgo一直连接不到服务器 浏览:504
安卓登ins需要什么 浏览:836
机器人算法的难点 浏览:226
全自动化编程 浏览:727
程序员高薪限制 浏览:693
压缩图片压缩 浏览:75
美国发明解压魔方 浏览:302
电脑怎么备案网上服务器 浏览:515
旅行商问题Python写法 浏览:953