当前位置: 技术问答>java相关
高分求助java的文件i/o的问题
来源: 互联网 发布时间:2015-08-22
本文导语: 正在写一个txt转成html的程序,原理很简单拉,读txt文件,遇到回车就转成,但是我不明白的是,如何判断读出来的是什么字符?比如: File file=new File("1.txt"); FileInputStream in=new FileInputStream(file); File newFile=new File("new.txt"); Fil...
正在写一个txt转成html的程序,原理很简单拉,读txt文件,遇到回车就转成
,但是我不明白的是,如何判断读出来的是什么字符?比如:
File file=new File("1.txt");
FileInputStream in=new FileInputStream(file);
File newFile=new File("new.txt");
FileWriter out=new FileWriter(newFile);
int c;
while((c=in.read())!=-1)
{
out.write(c);
out.flush();
}
请大家注意,in.read()读出数据,返回的是一个int,表示读出的长度,这样以来如何判断读出的是什么??而且我很不明白为什么out.write(c)能够写入数据.使用out.write("adc")可以写入"abc",但是out.write(c)写入的就不是一个int而是正确的自符,请高人指点
,但是我不明白的是,如何判断读出来的是什么字符?比如:
File file=new File("1.txt");
FileInputStream in=new FileInputStream(file);
File newFile=new File("new.txt");
FileWriter out=new FileWriter(newFile);
int c;
while((c=in.read())!=-1)
{
out.write(c);
out.flush();
}
请大家注意,in.read()读出数据,返回的是一个int,表示读出的长度,这样以来如何判断读出的是什么??而且我很不明白为什么out.write(c)能够写入数据.使用out.write("adc")可以写入"abc",但是out.write(c)写入的就不是一个int而是正确的自符,请高人指点
|
> farawayzheng_necas老兄,能说详细一点吗?
> in.read()被定义为int啊,返回的不是读出数据的长度吗??
返回的不是读出数据的长度, 它返回的是你读出的字节(byte),强制转化为int的。你看的书害人不浅。
> (in.read()).equals("n")这个写法不能成立啊,假如强制转换in.read()的
in.read返回int型,equals是Object的方法,当然不能用于int型。
> 类型,那它也只是一个数字字符(比如"8"),永远也不可能等于回车符的,请详
读入的int的低8位就是ascii码(文本格式的情况),对应的out.write(c)写出的也是c的低8位(就是ascii码),out.write("abc")要看你用的什么流,一般的流是没有这个方法的,你可以用PrintStream。
PrintStream写String的一般方法是把String中的Char(16位)提取出来,如果高8位为0,则只输出低8位,否则全部输出。
> 细解释.
> 解决后马上给分
同意:)
> in.read()被定义为int啊,返回的不是读出数据的长度吗??
返回的不是读出数据的长度, 它返回的是你读出的字节(byte),强制转化为int的。你看的书害人不浅。
> (in.read()).equals("n")这个写法不能成立啊,假如强制转换in.read()的
in.read返回int型,equals是Object的方法,当然不能用于int型。
> 类型,那它也只是一个数字字符(比如"8"),永远也不可能等于回车符的,请详
读入的int的低8位就是ascii码(文本格式的情况),对应的out.write(c)写出的也是c的低8位(就是ascii码),out.write("abc")要看你用的什么流,一般的流是没有这个方法的,你可以用PrintStream。
PrintStream写String的一般方法是把String中的Char(16位)提取出来,如果高8位为0,则只输出低8位,否则全部输出。
> 细解释.
> 解决后马上给分
同意:)
|
out.write(c)是写长度为c的字符流,所以可以写入"abc"。