当前位置:编程学习 > JAVA >>

JAVA读远程文件乱码

在本地读取文件没问题,但是读远程服务器的文件出现乱码的情况。远程服务器是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 读远程文件 乱码 --------------------编程问答-------------------- 编码问题. 不要用BufferedReader和BufferedWrite去读. --------------------编程问答-------------------- 如果你不在程序中显示文件内容,就不要使用Reader和Writer,直接使用inputStream和outPutStream就可以了。因为Reader和Writer会涉及编码的转换,你使用的编码不正确就会出现乱码。单纯的文件传递直接使用字节方式处理就没问题了,就像楼上说的。 --------------------编程问答--------------------
引用 2 楼 bluemoby 的回复:
如果你不在程序中显示文件内容,就不要使用Reader和Writer,直接使用inputStream和outPutStream就可以了。因为Reader和Writer会涉及编码的转换,你使用的编码不正确就会出现乱码。单纯的文件传递直接使用字节方式处理就没问题了,就像楼上说的。

能具体点吗 我不太会用inputStream和outPutStream --------------------编程问答--------------------
引用 1 楼 ryanhuang2004 的回复:
编码问题. 不要用BufferedReader和BufferedWrite去读.

那要怎么读啊 --------------------编程问答-------------------- 类似于这样

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();

--------------------编程问答-------------------- 不行啊  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 楼 hui415422402 的回复:
不行啊  InputStream in = urlCon.getInputStream();这句有问题
报错如下
Exception in thread "main" java.lang.ClassCastException: sun.net.www.protocol.http.HttpURLConnection$HttpInputStream cannot be c……

5楼给你的代码没有问题. 你报这个错是因为你引入的类包不对.
正确的应该是java.io.InputStream类. 而不是org.omg.CORBA.portable.InputStream --------------------编程问答-------------------- 写入的还是乱码啊 --------------------编程问答-------------------- 打开文件以后用notebook++之类的软件打开看看.可能是文件编码的问题.
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,