A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 仰天长啸 中级黑马   /  2015-3-7 16:35  /  1122 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我想问下 我在IO流中用数组读取数据时 因为读取的不都是二进制嘛 需要转化为String类型我们才能看懂,那为什么不直接在要转化的代码前面加String就是这样的个是 String (要转化的代码) ,我看实际使用中是加了new String (要转化的代码) ,难道就是因为我们用了String类??还是什么呀??
这是我刚敲的代码,不加new 会报错
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

//一次读取一个数组
public class fourday009 {
public static void main(String[] args) throws IOException {
        File file=new File("F:\\HollleWorld");//创建HelloWorld对象
        FileInputStream fis=new FileInputStream(file);//创建流对象
        byte [] bys=new byte [1024];
        int a=0;
        while((a=fis.read(bys))!=-1){
                System.out.print( new String(bys,0,a));
               
        }       
}
}

4 个回复

倒序浏览
System.out.print(String(bys,0,a));
楼主是这个意思么?
这个语法上就有问题啊,既不是强制类型转换(String)bys,也不是调用静态方法,而且构造函数不允许用static修饰符修饰,不可能是静态方法。
回复 使用道具 举报
这里有几个小错误HelloWorld.Java 还一个是关闭流对象
回复 使用道具 举报
我表达没不清晰,现在我再发一次代码 疑问已经在代码上体现
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

//一次读取一个数组
public class fourday009 {
public static void main(String[] args) throws IOException {
        File file=new File("F:\\HelloWorld.java");
        FileInputStream fis=new FileInputStream(file);//创建流对象
        byte [] bys=new byte [1024];
        int a=0;
        while((a=fis.read(bys))!=-1){
                System.out.print( new String(bys,0,a));//这里不是new 里一次 其实我感觉是不用new的就报错了
                //这里不大明白
        }       
        fis.close();
}
}


结果是:
class HelloWorld{
public static void main (String [] args){
        System.out.println("我爱JAVA");
}
}
回复 使用道具 举报

强制转型分为基本数据类型之间和引用数据类型之间(一般为继承关系的类、接口实例之间)两种情况。
String是引用数据类型的一种,与基本数据类型之间的转换不能简单前面加类型名称,要通过方法来进行与基本数据类型之间的转换。
比如这里的与字节数组的互相转换:
1.string 转 byte[]:getBytes()方法
byte[] midbytes=isoString.getBytes("UTF8");    //为UTF8编码

2.byte[]转String:使用String的构造方法。
String isoString = new String(bytes,0,len,"ISO-8859-1");
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马