在本地读取文件没问题,但是读远程服务器的文件出现乱码的情况。远程服务器是Linux系统
 String strUrl = "http://192.168.1.128:3306/data/hello.txt";
   URL url = new URL(strUrl);
   HttpURLConnection urlCon = (HttpURLConnection)url.openConnection();
   urlCon.setConnectTimeout(5000);
   urlCon.setReadTimeout(5000);
    BufferedReader in=new BufferedReader(new InputStreamReader(urlCon.getInputStream(), "UTF-8"));
    BufferedWriter out=new BufferedWriter(new FileWriter("F:\\朱文慧\\findpoint\\out.txt"));
   String inputLine="";
   while((inputLine=in.readLine())!=null){
    System.out.println(inputLine);
    out.write(inputLine);
    
   }
   in.close();
   out.close();
JAVA 读远程文件 乱码

解决方案 »

  1.   

    编码问题. 不要用BufferedReader和BufferedWrite去读.
      

  2.   

    如果你不在程序中显示文件内容,就不要使用Reader和Writer,直接使用inputStream和outPutStream就可以了。因为Reader和Writer会涉及编码的转换,你使用的编码不正确就会出现乱码。单纯的文件传递直接使用字节方式处理就没问题了,就像楼上说的。
      

  3.   

    能具体点吗 我不太会用inputStream和outPutStream
      

  4.   

    类似于这样
    String strUrl = "http://192.168.1.128:3306/data/hello.txt";
    URL url = new URL(strUrl);
    HttpURLConnection urlCon = (HttpURLConnection) url.openConnection();
    urlCon.setConnectTimeout(5000);
    urlCon.setReadTimeout(5000);
    InputStream in = urlCon.getInputStream(); OutputStream out = new FileOutputStream("F:\\朱文慧\\findpoint\\out.txt");
    int current=in.read();
    while(current!=-1){
    out.write(current);
    current=in.read();
    } in.close();
    out.close();
      

  5.   

    不行啊  InputStream in = urlCon.getInputStream();这句有问题
    报错如下
    Exception in thread "main" java.lang.ClassCastException: sun.net.www.protocol.http.HttpURLConnection$HttpInputStream cannot be cast to org.omg.CORBA.portable.InputStream
    at test1.main(test1.java:35)
      

  6.   

    5楼给你的代码没有问题. 你报这个错是因为你引入的类包不对.
    正确的应该是java.io.InputStream类. 而不是org.omg.CORBA.portable.InputStream
      

  7.   

    打开文件以后用notebook++之类的软件打开看看.可能是文件编码的问题.