java处理字符流
答案:4 悬赏:80 手机版
解决时间 2021-02-08 00:55
- 提问者网友:辞取
- 2021-02-07 04:57
您好,我在您的文库里有看到关于java字符流的文章。
我现在有一串字符是这样输出的:
InputStream in= con.getInputStream();
byte[] b= new byte[1024];
int result= in.read(b);
while( result!=-1){
System.out.write(b,0,result);
result= in.read(b);
}
我想提取其中的
<\title>里面的内容。应该要怎么写呢?我刚接触java有点迷茫。谢谢!
最佳答案
- 五星知识达人网友:渊鱼
- 2021-02-07 05:33
把你的inputString 传递下来
InputStreamReader isr = new InputStreamReader(in);
char[] c = new char[1024];
StringBuffer sb = new StringBuffer();
int len = 0;
while ((len = isr.read(c, 0, c.length)) != -1) {
sb.append(c,0,len);
}
int titleLength = "
".length();
String title = sb.substring(sb.indexOf("") + titleLength, sb.indexOf(""));
全部回答
- 1楼网友:舍身薄凉客
- 2021-02-07 08:35
你这个代码是读取字节流的,如果查找的是文本的话,建议用字符流按行读取更好,这样就可以在读取的每一行的字符串中查找你要找的字符串(比如
<\title>)。如果字符串没有换行的话,用正则去进行匹配效果会更好一点。
- 2楼网友:污到你湿
- 2021-02-07 07:14
这个不是很清晰么,如果是和文本处理有关系的就用字符流,因为读取的最小单位不一样,字符流方便处理字符, 如果是其他的比如说音频视频图片等等文件的,和字符没有关系了,就用字节流,一个BYTE一个BYTE的来,不能更清晰了。我估计你应该是IO整个框架不是很熟悉。
希望能解决您的问题。
- 3楼网友:雪起风沙痕
- 2021-02-07 06:07
具体解决办法如下: 1、 针对直接在console上运行的类 对于这种情况,我们建议在程序编写时,如果需要从用户端接收用户的可能含有中文的输入或含有中文的输出,程序中应该采用字符流来处理输入和输出,具体来说,应用以下面向字符型节点流类型: 对文件:filereader,filewrieter 其字节型节点流类型为:fileinputstream,fileoutputstream 对内存(数组):chararrayreader,chararraywriter 其字节型节点流类型为:bytearrayinputstream,bytearrayoutputstream 对内存(字符串):stringreader,stringwriter 对管道:pipedreader,pipedwriter 其字节型节点流类型为:pipedinputstream,pipedoutputstream 同时,应该用以下面向字符型处理流来处理输入和输出: bufferedwriter,bufferedreader 其字节型的处理流为:bufferedinputestream,bufferedoutputstream inputstreamreader,outputstreamwriter 其字节型的处理流为:datainputstream,dataoutputstream 其中inputstreamreader和inputstreamwriter用于将字节流按照指定的字符编码集转换到字符流,如: inputstreamreader in = new inputstreamreader(system.in,"gb2312"); outputstreamwriter out = new outputstreamwriter (system.out,"gb2312"); 例如:采用如下的示例java编码就达到了要求: //read.java import java.io.*; public class read { public static void main(string[] args) throws ioexception { string str = "\n中文测试,这是内部硬编码的串"+"\ntest english character"; string strin= ""; bufferedreader stdin = new bufferedreader(new inputstreamreader(system.in,"gb2312")); //设置输入接口按中文编码 bufferedwriter stdout = new bufferedwriter(new outputstreamwriter(system.out,"gb2312")); //设置输出接口按中文编码 stdout.write("请输入:"); stdout.flush(); strin = stdin.readline(); stdout.write("这是从用户输入的串:"+strin); stdout.write(str); stdout.flush(); }} 同时,在编译程序时,我们用以下方式来进行: javac -encoding gb2312 read.java
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯