当前位置:  开发笔记 > 编程语言 > 正文

Java - 不推荐使用的API - DataInputStream.readLine

如何解决《Java-不推荐使用的API-DataInputStream.readLine》经验,为你挑选了2个好方法。

我的教授.给了我这个TCP/UDP的例子,他说这对他有用.但是当我去编译时,我得到一个弃用的API错误,说readLine不再使用了...

我该如何处理?

码:

import java.io.*;
import java.net.*;

public class Server{

    static  Socket clientSocket = null;
    static  ServerSocket serverSocket = null;

    // This chat server can accept up to 10 clients' connections

    static  clientThread t[] = new clientThread[10];

    public static void main(String args[]) {

    // The default port

    int port_number=2222;

    if (args.length < 1)
        {
        System.out.println("Usage: java MultiThreadChatServer \n"+
                   "Now using port number="+port_number);
        } else {
        port_number=Integer.valueOf(args[0]).intValue();
        }

        try {
        serverSocket = new ServerSocket(port_number);
        }
        catch (IOException e)
        {System.out.println(e);}

    while(true){
        try {
        clientSocket = serverSocket.accept();
        for(int i=0; i<=9; i++){
            if(t[i]==null)
            {
                (t[i] = new clientThread(clientSocket,t)).start();
                break;
            }
        }
        }
        catch (IOException e) {
        System.out.println(e);}
    }
    }
}

class clientThread extends Thread{

    DataInputStream is = null;
    PrintStream os = null;
    Socket clientSocket = null;
    clientThread t[];

    public clientThread(Socket clientSocket, clientThread[] t){
    this.clientSocket=clientSocket;
        this.t=t;
    }

    public void run()
    {
    String line;
        String name;
    try{
        is = new DataInputStream(clientSocket.getInputStream());
        os = new PrintStream(clientSocket.getOutputStream());
        os.println("Enter your name.");
        name = is.readLine();
        os.println("Hello "+name+" to our chat room.\nTo leave enter /quit in a new line");
        for(int i=0; i<=9; i++)
        if (t[i]!=null && t[i]!=this)
            t[i].os.println("*** A new user "+name+" entered the chat room !!! ***" );
        while (true) {
        line = is.readLine();
                if(line.startsWith("/quit")) break;
        for(int i=0; i<=9; i++)
            if (t[i]!=null)  t[i].os.println("<"+name+"> "+line);
        }
        for(int i=0; i<=9; i++)
        if (t[i]!=null && t[i]!=this)
            t[i].os.println("*** The user "+name+" is leaving the chat room !!! ***" );

        os.println("*** Bye "+name+" ***");

        for(int i=0; i<=9; i++)
        if (t[i]==this) t[i]=null;

        is.close();
        os.close();
        clientSocket.close();
    }
    catch(IOException e){};
    }
}

Client类中也发生了同样的事情.



1> D.Shawley..:

我假设你想知道你应该使用什么呢?Java API文档声明您应该使用BufferedReader它们甚至为您提供codez!



2> Stephen C..:

    阅读javadoc.这就解释了为什么不推荐使用该方法以及如何替换它.

    显然,当您在Javadoc中提供更改时,您需要使用您的智能.如果声明了BufferedReader,则必须导入该类,并确保代码使用它.并且您需要确保没有代码尝试使用包装的流.(在这个例子中不应该是一个问题.)

    尽管已弃用,但您可以使用该方法.您只需要配置Java编译器(例如,通过IDE的编译器首选项)将弃用的方法视为警告而不是错误.(我不会在这种情况下推荐它.根据javadoc中的建议,修改代码会更好.)

    你的教授应该更清楚.在JDK 1.1中,该特定方法显然首先被标记为已弃用.(或许他/她正在测试你为自己解决问题的能力!)

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有