精华内容
下载资源
问答
  • 今天在编程的时候,用到了DataInPutStream类的readUTF()方法时报了个异常,查了好多资料也不能解决,求大神指点啊.高分悬赏. ``` package IO流; import java.io.DataInputStream; import java.io.DataOutputStream;...
  • 用了readUTF方法   <p style="text-align:center"><img alt="" height="21" src="https://img-ask.csdnimg.cn/upload/1620367829161.PNG" width="459" /></p>   服务端用的的确是writeUTF方法 ...
  • 正如文档所述,类DataInputStream用于从底层输入流中读取原始Java数据类型,而readUTF()使用某种修改的UTF-8格式(不是标准的UTF-8格式)。要从文本文件中读取,您应该使用Reader。java.io中存在的各种Reader类...

    文本文件读取时,类DataInputStream是错误的正如文档所述,类DataInputStream用于从底层输入流中读取原始Java数据类型,而readUTF()使用某种修改的UTF-8格式(不是标准的UTF-8格式)。 
    要从文本文件中读取,您应该使用Reader。java.io中存在的各种Reader类(例如BufferedReader,InputStreamReader,FileReader等)负责使用字符编码将数据从输入流转换为文本。 
    解决方案一:

    File file = new File("C:\\MyFile.txt");
    fis = new FileInputStream(file);
     
    isr = new InputStreamReader(fis, "UTF-8");
    br = new BufferedReader(isr);
     
    String line;
    while ((line = br.readLine()) != null) {
      System.out.println(line);
    }

    解决方案二:

    使用:

    new String(file.readLine().getBytes("ISO-8859-1"),"utf-8");

    替代readUTF()来获取文本中的中文。

    转载于:https://www.cnblogs.com/heisen/p/9960060.html

    展开全文
  • DataInputStream.readUTF返回返回EOFException

    千次阅读 2018-08-26 21:51:56
    DataInputStream.readUTF能读取的数据不是一般的数据,实际使用的也不多,一般会配合DataOutStream.writeUTF配合使用,一般的字符串不要使用readUTF读取,否则就会报EOFException的异常,至于为什么会出现这个问题,...

    DataInputStream.readUTF能读取的数据不是一般的数据,实际使用的也不多,一般会配合DataOutStream.writeUTF配合使用,一般的字符串不要使用readUTF读取,否则就会报EOFException的异常,至于为什么会出现这个问题,看下DataInputStream.readUTF以及DataOutStream.writeUTF的源码来解释下:

        public final static String readUTF(DataInput in) throws IOException {
            int utflen = in.readUnsignedShort();   //读取字符串长度,所以readUTF能读取的字符串前面有两个字节是真正要读取的字符串的长度
            byte[] bytearr = null;
            char[] chararr = null;
            if (in instanceof DataInputStream) {
                DataInputStream dis = (DataInputStream)in;
                if (dis.bytearr.length < utflen){
                    dis.bytearr = new byte[utflen*2];
                    dis.chararr = new char[utflen*2];
                }
                chararr = dis.chararr;
                bytearr = dis.bytearr;
            } else {
                bytearr = new byte[utflen];
                chararr = new char[utflen];
            }

            int c, char2, char3;
            int count = 0;
            int chararr_count=0;

            in.readFully(bytearr, 0, utflen);

     

        static int writeUTF(String str, DataOutput out) throws IOException {
            int strlen = str.length();
            int utflen = 0;
            int c, count = 0;

            byte[] bytearr = null;
            if (out instanceof DataOutputStream) {
                DataOutputStream dos = (DataOutputStream)out;
                if(dos.bytearr == null || (dos.bytearr.length < (utflen+2)))
                    dos.bytearr = new byte[(utflen*2) + 2];
                bytearr = dos.bytearr;
            } else {
                bytearr = new byte[utflen+2];
            }

         out.write(bytearr, 0, utflen+2);   //实际写入数据时会在前两个字节写入字符串长度

     

    展开全文
  • 异常信息: Exception in thread "main" java.io.EOFException at java.io.DataInputStream.readFully(DataInputStream.java:180) at java.io.DataInputStream.readUTF(DataInputStream.java:592) at java.io....
     package IO流;
    
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class DataTest {
    
        /**
         * 数据输入输出流
         * 
         */
        public static void main(String[] args) throws IOException {
            //向指定文件中写入数据
            //打开文件输出流
            FileOutputStream fos=new FileOutputStream("G://word.txt");
            //将此输出流链接到指定基础输出流DataOutPutStream
            DataOutputStream dos=new DataOutputStream(fos);
            //写入数据:
            dos.writeBytes("我是大禹!");//用此方法写入的数据用记事本打开是乱码
            dos.writeChars("我治水!");//用此方法写入的数据用记事本打开是乱码
            dos.writeUTF("你智障吗?");
            //关闭流
            fos.close();
            //从文件中读取数据
            //首先打开文件输入流
            FileInputStream fis=new FileInputStream("G://word.txt");
            //将此输入流连接到基本数据输入流DataInPutStream
            DataInputStream dis=new DataInputStream(fis);
            //开始读取数据啦
    //      String s=dis.readUTF();
            System.out.println(dis.readUTF());
            dis.close();
    
    
    
    
    
    
    
        }
    
    }
    
    

    异常信息:
    Exception in thread "main" java.io.EOFException
    at java.io.DataInputStream.readFully(DataInputStream.java:180)
    at java.io.DataInputStream.readUTF(DataInputStream.java:592)
    at java.io.DataInputStream.readUTF(DataInputStream.java:547)
    at IO流.DataTest.main(DataTest.java:35)

    编辑于:2017.06.25 11:50

    展开全文
  • 服务端对try catch finally重新进行了定义,当发生异常,主动提示,或关闭出现异常的socket 服务器端代码修改如下: package com.swift; import java.io.DataInputStream; import java.io.IOException; import ...

    服务端对try catch finally重新进行了定义,当发生异常,主动提示,或关闭出现异常的socket

    服务器端代码修改如下:

    package com.swift;
    
    import java.io.DataInputStream;
    import java.io.IOException;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class ChatServer {
    
        public static void main(String[] args) {
            boolean started=false;
            ServerSocket ss=null;
            DataInputStream dis=null;
            Socket s = null;
            try {
                ss = new ServerSocket(8888);
                started=true;
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            try {
                while(started) {
                    boolean connected=false;
                    s = ss.accept();
                    connected=true;
                    System.out.println("a client connected success");
                    dis=new DataInputStream(s.getInputStream());
                    while(connected) {
                    String str=dis.readUTF();
                    System.out.println(str);
                    }
                }
            } catch (Exception e) {
                //e.printStackTrace();
                System.out.println("client has closed.");
            }finally {
                if(dis!=null) {
                    try {
                        dis.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if(s!=null) {
                    try {
                        s.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    
    }

    客户端换了一个OutputStream,使用DataOutputStream发送信息,dos.writeUTF(tf.getText());

    0.6版效果图

    客户端代码修改如下:

    package com.swift;
    
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.net.Socket;
    import java.net.UnknownHostException;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
    
    public class ChatClientFrame extends JFrame {
    
        private static final long serialVersionUID = -118470059355655240L;
        Socket s=null;
        DataOutputStream dos=null;
        JLabel label_shang=new JLabel();
        JLabel label_xia=new JLabel();
        JTextField tf = new JTextField(38);
        JTextArea ta = new JTextArea(15, 50);
        JButton button=new JButton();
    
        public ChatClientFrame() {
            setBounds(200, 200, 500, 400);
            setTitle("客户端聊天工具 —— 0.6");
            //对窗口进行大的布局,分为三行一列,在pBasic面板上添加三个面板shang zhong xia
            JPanel pBasic=new JPanel();
            pBasic.setLayout(new BorderLayout());//不设置默认也是这种布局模式
            setContentPane(pBasic);//把面板放在窗口上,不记得用this.关键字
            JPanel shang=new JPanel();
            JPanel zhong=new JPanel();
            JPanel xia=new JPanel();
            //设置JPanel面板的大小
            shang.setSize(470, 25);
            zhong.setSize(470, 180);
            xia.setSize(470, 40);
            pBasic.add(shang,BorderLayout.NORTH);
            pBasic.add(zhong,BorderLayout.CENTER);
            pBasic.add(xia,BorderLayout.SOUTH);
            shang.setBackground(Color.red);
            zhong.setBackground(Color.yellow);
            xia.setBackground(Color.blue);
    
            label_shang.setText("聊天记录");
            shang.add(label_shang);
            ta.setLineWrap(true);// 自动换行
            JScrollPane scroll=new JScrollPane(ta);// 增加滚动条,以便不增加行数
            zhong.add(scroll);
            label_xia.setText("输入信息");
            xia.add(label_xia,BorderLayout.WEST);
            /*
             * 增加功能,窗口监听事件,窗口打开时设置光标焦点在tf文本域中
             */
            this.addWindowListener(new WindowAdapter() {
                @Override
                public void windowOpened(WindowEvent e) {
                    tf.requestFocus();
                }
            });
            xia.add(tf,BorderLayout.CENTER);
            button.setText("发送");
            xia.add(button,BorderLayout.EAST);
    
            final class ShareListener implements ActionListener{
    
                @Override
                public void actionPerformed(ActionEvent e) {
                    String taText=ta.getText();
                    String tfText=tf.getText()+"\r\n";
                    String tfText1=tf.getText();
                    ta.setText(taText+tfText);
                    tf.setText("");
                    //当回车或发送按钮时,tfText发送到服务器
                    try {
                        dos.writeUTF(tfText1);
                        dos.flush();
                    } catch (IOException e1) {
                        e1.printStackTrace();
                    }
                    
                }
            }
            button.addActionListener(new ShareListener());
            tf.addActionListener(new ShareListener());
            //通过压缩自动调整各个面板
            pack();
            this.addWindowListener(new WindowAdapter() {
                @Override
                public void windowClosing(WindowEvent e) {
                    disconnect();
                    System.exit(0);
                }
            });
            setVisible(true);
            //创建窗体直接调用连接服务器
            connect();
        }
        
        public void connect() {
            try {
                s=new Socket("127.0.0.1",8888);
                System.out.println("connected!");
                dos=new DataOutputStream(s.getOutputStream());
                
            } catch (UnknownHostException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        public void disconnect() {
            try {
                dos.close();
                s.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        
        
        public static void main(String[] args) {
            new ChatClientFrame();
        }
    
    }

     

    展开全文
  • 服务端对try catch finally重新进行了定义,当发生异常,主动提示,或关闭出现异常的socket 服务器端代码修改如下: package com.swift; import java.io.DataInputStream; import java.io.IOException; ...
  • RandomAccessFile 类实例 使用 readUTF() 方法 时,产生 java.io.EOFException 异常readUTF() 只能读取由 writeUTF() 所写的文本 若定标至文件头读取,则必须保证所有文本均由 writeUTF() 所写 若遇到非由 ...
  • DatainputStream的readUTF()方法单独使用会报EOF异常,建议和DataOutputStream的writeUTF()配合使用,单独使用writeUTF方法未发现问题.
  • 一般将readUTF和writeUTF配合起来使用。单独使用readUTF的话,会出一些错误。 也就是writeUTF输出以后,readUTF拿着...使用readUTF直接读文件的话,老是报一个EOFException,就是文件结束的异常,目前还不会处理。...
  • EOFException异常的处理

    2020-04-14 16:56:39
    其实我想说,这个异常不是必须声明的,也就是说它虽然是异常,但其实是正常运行结束的标志。EOF表示读到了文件尾( String str = dis.readUTF(); ,客户端已经断开,后面已经没有内容可以读了),发送结束自然连接也...
  • 异常-java.io.EOFException

    万次阅读 2019-11-14 18:09:19
    UTF是双字节编码,而writeChars方法写入的是按照字符格式写入的,在文件中的占位要小于以Unicode编码的同样字符串,所以,使用readUTF方法读取时,会出现EOF错误 EOFException:当输入过程中意外到达文件或流的末尾...
  • 异常一 只开启一个客户端,输入信息后关闭,客户端出现如下异常 ... while (connected) { String str = dis.readUTF(); 当窗口关闭后,Socket已经关闭,读的操作还在继续 处理这个异常,代码
  • UTF是双字节编码,而writeChars方法写入的是按照字符格式写入的,在文件中的占位要小于以Unicode编码的同样字符串,所以,使用readUTF方法读取时,会出现EOF错误 EOFException:当输入过程中意外到达文件或流的末尾...
  • 因为在传输小文件时不会抛出`java.io.UTFDataFormatException: malformed input around byte 1`,传输大文件时总会在等待一个特定的时间抛出异常,所以怀疑是不是有某个队列满了导致`operate=in.readUTF()`读取到错误...
  • 18/11/28 17:15:23 ERROR Inbox: Ignoring error java.io.EOFException at java.io.DataInputStream.readFully(DataInputStream.java:...at java.io.DataInputStream.readUTF(DataInputStream.java:609) at java.i...
  • 异常: java.net.SocketException: Connection reset at java.net.SocketInputStream.read(Unknown Source) at java.net.SocketInputStream.read(Unknown Source) at java.net.SocketInputStream.read(Unknown ...
  • at org.springframework.asm.ClassReader.readUTF8(Unknown Source) at org.springframework.asm.ClassReader.accept(Unknown Source) at org.springframework.asm.ClassReader.accept(Unknown Source) at ...
  • 问题的原因是 while(connected) { String str=dis.readUTF(); System.out.println(str); } 不断循环执行,一直在死循环获取socket发送的信息, 使得前面的语句 s = ss.accept(); connect
  • 问题的原因是 while(connected) { String str=dis.readUTF(); System.out.println(str); } 不断循环执行,一直在死循环获取socket发送的信息, 使得前面的语句 s = ss.accept(); con...
  • java.io.EOFException

    2020-09-23 21:01:11
    java.io.EOFException EOFException:当输入...2、UTF是双字节编码,而writeChars方法写入的是按照字符格式写入的,在文件中的占位要小于以Unicode编码的同样字符串,所以,使用readUTF方法读取时,会出现EOF错误 ...
  • 有时在调试运行JavaEE项目时,出现 java.lang.OutOfMemoryError: Java heap space异常,像下面这样: Caused by: java.lang.OutOfMemoryError: Java heap space at java.io.DataInputStream.readUTF...
  • 严重: 异常将上下文初始化事件发送到类的侦听器实例.[org.springframework.web.context.ContextLoaderListener] java.lang.ArrayIndexOutOfBoundsException: 219 at org.springframework.asm.ClassReader.a(Unknown...
  • EOFException的处理

    万次阅读 2018-05-17 10:49:33
    其实我想说,这个异常不是必须声明的,也就是说它虽然是异常,但其实是正常运行结束的标志。EOF表示读到了文件尾( String str = dis.readUTF(); ,客户端已经断开,后面已经没有内容可以读了),...
  • 有时在调试运行JavaEE项目时,出现 java.lang.OutOfMemoryError: Java heap space异常,像下面这样: Caused by: java.lang.OutOfMemoryError: Java heap spaceat java.io.DataInputStream.readUTF...

空空如也

空空如也

1 2 3
收藏数 43
精华内容 17
关键字:

readutf异常