亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java - 每行中缺少第一個字母

Java - 每行中缺少第一個字母

開心每一天1111 2023-06-04 17:46:23
我正在創建將文件傳輸到客戶端的文件傳輸程序。但是當我傳輸文件時,它丟失了每一行的第一個字母。我的代碼有什么問題?我是 java 的新手,所以我不知道下一步該做什么。我試過更改字節大小但沒有幫助。我應該怎么辦?Server.javaimport java.io.*;import java.net.ServerSocket;import java.net.Socket;import java.util.Scanner;class Server {    public static void main(String[] args) throws IOException {        FileInputStream fis = null;        BufferedInputStream bis = null;        OutputSteam os = null;        ServerSocket serverSocket = null;        Scanner scan = new Scanner(System.in);        String fileSend;        System.out.print("Type the path to the file to send >> ");        fileSend = scan.nextLine();        try {            serverSocket = new ServerSocket(5467);        } catch (Exception e) {            System.out.println("Could not bind to port 5467, Maybe address is already is use or you need to run as administrator");            return;        }        System.out.println("Listening on port 5467");        System.out.println("Waiting for the connection...");        while (true) {            File FileSend = null;            Socket socket = serverSocket.accept();            OutputStream out = socket.getOutputStream();            System.out.println("Accepted connection : " + socket);            InputStream in = socket.getInputStream();            DataInputStream dataIn = new DataInputStream(in);            String login = dataIn.readUTF();            String password = dataIn.readUTF();            String result = "You credential is ";            if (login.equals("1c18b5cdef8f9b4c5d6b2ad087265e597d1d4639337b73a04a335103c00ec64b") && password.equals("1c18b5cdef8f9b4c5d6b2ad087265e597d1d4639337b73a04a335103c00ec64b13d0b73358bfa8978dfaaf180565bcfecd3dc0631cda525920865145fb3fa131")) {                result += "correct";            } else {                result += "incorrect";            }        }    }
查看完整描述

2 回答

?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

文件是可序列化的,所以我建議您應該嘗試直接通過 ObjectOutputStream / ObjectInputStream 發送它。


例如在服務器端:


ObjectInputStream in = new ObjectInputStream(socket.getInputStream());

ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());

...

out.writeObject(yourFileObject);

在客戶端:


ObjectInputStream in = new ObjectInputStream(socket.getInputStream());

ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());

...

File receivedFile = null;

try {

    receivedFile = (File) in.readObject();

}

catch (IOException e) {

...

}


查看完整回答
反對 回復 2023-06-04
?
眼眸繁星

TA貢獻1873條經驗 獲得超9個贊

我不完全確定為什么會發生這種情況,但您不應該使用DataInputStreamwhich “讓應用程序讀取原始 Java 數據類型”,而InputStreamReaderwhich “是從字節流到字符流的橋梁”。

此外,您可以將該閱讀器包裝成一個BufferedReader讓您逐行閱讀的內容,您最終會得到類似


try (BufferedReader reader=new BufferedReader(new InputStreamReader(inStream, UTF8));

? ? ?PrintWriter writer = new PrintWriter(file)) {

? ? reader.lines().forEach(writer::println);

}

上傳,或


try (PrintWriter writer = new PrintWriter(outStream)) {

? ? Files.lines().forEach(writer::println);

}

下載。


查看完整回答
反對 回復 2023-06-04
  • 2 回答
  • 0 關注
  • 168 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號