import java.io.*;import java.net.Socket;import java.net.UnknownHostException;import java.util.Scanner;public class SocketText { public static void outputStream(String name) { File file=new File(name); FileOutputStream os=null; Scanner a=new Scanner(System.in); try{ os=new FileOutputStream(file); System.out.println("请输入用户名:"); byte[] b=a.nextLine().getBytes(); System.out.println("请输入密码:"); byte[] b2=a.nextLine().getBytes(); System.out.println("恭喜你注册成功!"); os.write(b); os.write(b2);
os.flush(); } catch(FileNotFoundException e) { e.printStackTrace(); } catch(IOException e) { e.printStackTrace(); } finally { try{ if(os!=null) { os.close(); } } catch(IOException e) { e.printStackTrace(); } } } public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("输入1为注册,输入2为登陆!请选择:"); Socket socket=null; try { socket=new Socket("127.0.0.1",12345); OutputStream os=socket.getOutputStream(); outputStream("F:\\abc.txt"); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(socket!=null){ try { socket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }
输入是能输入的,但是输入完最好一项后就打印出这个东西出来,为什么呢?
小方格是输出了空字符和制表符等特殊符号,关闭方法如下:
1、打开Window->Preferences->General->Editors
2、选中Text Editors->去掉show whitespace characters前面的钩钩即可。
项目名 右键 properties 然后如图
追问改了,还是有问题,文字也变了
追答Eclipse 的控制台必须用GBK编码。所以条件1和条件4必须同时满足否则运行的还是乱码。才能保证不是乱码。
条件1,Window | Preferences | Workspace | Text fileencoding | GBK编码。
这样定义的是整个工作区间的编码。
这样就把整个工作空间的编码格式定死了,但是如果某一个工程用的是不同的编码格式的话这样单独再解决。如下:
条件2,工程上右键 | Properties | Resource | Text fileencoding | UTF-8编码。或者适合的编码格式。这样定义的是整个工程的编码。
这样就把整个工程的编码格式定死了,但是如果某一个文件用的是不同的编码格式的话这样单独再解决。如下:
条件3,在某个文件上右键| Properties | Resource | Text fileencoding | UTF-8编码。或者适合的编码格式。这样定义的是单独某个文件的编码。
这里要说的是文件的实际编码格式优先用的是:第3个,其次再用2,最后先用1。有时候是123,必须满足条件。无论怎样这几种编码格式试一试就全知道了。
条件4,还有运行时编码设置如下:菜单:Run Configuration | 右侧的选项卡Common 的 Console Encoding 选择GBK编码。这个是用来控制console控制台显示,必须是GBK,就不会乱码。尽管1,2,3条件都不是GBK,只要4是GBK。控制台就不会乱码。
这样保证了工作空间和工程代码编程方式和工程里的单独文件的编码格式的不冲突。
改了,还是有问题,文字也变了
追答修改为utf-8 之后,System.out.println里的汉字变成乱码了么,你把这些乱码删掉重新输入一遍再打印出来看看