java 的DataOutputStream 的 writeBytes(String s) 方法
java 的DataOutputStream 的 writeBytes(String s) 方法在向输出流写入中文字符时会出现问题。该方法的源代码如下:
public final void writeBytes(String s) throws IOException {
int len = s.length();
for (int i = 0 ; i < len ; i++) {
out.write((byte)s.charAt(i));
}
incCount(len);
}
举个例子,以字符串"你好"作为参数输入,(byte)s.charAt(i) 这句就会导致问题,因为java里的char类型是16位的,一个char可以存储一个中文字符,在将其转换为 byte后高8位会丢失,这样就无法将中文字符完整的输出到输出流中。所以在可能有中文字符输出的地方最好先将其转换为字节数组,然后再通过write(byte[] b)方法输出。例,
String s = "你好";
write(s.getBytes());
|
分享到:
相关推荐
out.writeBytes("param=" + URLEncoder.encode("中文参数", "UTF-8")); out.flush(); out.close(); ``` 对于使用HttpClient的情况,可以创建一个`HttpPost`对象,然后设置`NameValuePair`,并使用`EntityUtils....
在Java和C#之间进行Socket通信时,遇到中文乱码问题主要是由于编码格式不一致导致的。Java默认使用UTF-8编码,而C#在处理字符串时可能使用其他编码,如GBK或ASCII。为了解决这个问题,我们需要确保两端在发送和接收...
public static void uploadFileToServer(File file, String serverUrl) throws IOException { HttpURLConnection connection = null; DataOutputStream outputStream = null; FileInputStream inputStream = ...
public void uploadFile(String serverUrl, String fileName, String filePath) { HttpURLConnection connection = null; try { URL url = new URL(serverUrl); connection = (HttpURLConnection) url.open...
try (DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream())) { // 写入边界 outputStream.writeBytes(boundaryLine); // 写入图片部分 String disposition = "Content-...
try (DataOutputStream dos = new DataOutputStream(conn.getOutputStream())) { // 写入文件部分 String contentDisposition = "form-data; name=\"file\"; filename=\"" + fileName + "\""; dos.writeBytes("\r...
在Java的I/O系统中,`DataInputStream`和`DataOutputStream`以及`FilterStream`是处理数据输入和输出的关键类,它们对于程序的文件操作和网络通信起着至关重要的作用。本教程将深入讲解这些类的功能、用法以及它们在...
DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream()); // 添加其他参数 for (Map.Entry<String, String> entry : params.entrySet()) { outputStream.writeBytes("\r\n--" + ...
try (DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream())) { for (File file : files) { outputStream.writeBytes("\r\n--" + boundary + "\r\n"); outputStream.writeBytes(...
DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream()); for (String fileName : fileNames) { File file = new File(fileName); outputStream.writeBytes("\r\n--" + boundary ...
jdk api-DataOutputStream基础、应用、实战
public static String uploadFile(String actionUrl, String[] uploadFilePaths) { String end = "\r\n"; String twoHyphens = "--"; String boundary = "*"; DataOutputStream ds = null; InputStream ...
private static void writePart(DataOutputStream dataOutput, String name, String fileName, InputStream fileInput) throws IOException { dataOutput.writeBytes("\r\n------WebKitFormBoundary7MA4YWxkTrZu0...
os.writeBytes("pm install -r -t -s /data/local/tmp/yourapk.apk\n"); os.flush(); os.close(); process.waitFor(); ``` 这段代码会请求root权限,然后执行静默安装命令。 4. **处理权限和异常**:在执行...
os.writeBytes("pm install -r -t -S " + apkSize + " " + apkPath + "\n"); os.flush(); os.writeBytes("exit\n"); os.flush(); process.waitFor(); ``` 这段代码首先获取root权限,然后执行安装命令,最后...
dos = new DataOutputStream(s.getOutputStream()); dis = new DataInputStream(s.getInputStream()); } catch (IOException ioe) { System.out.println("连接失败"); ioe.printStackTrace(); } // ...省略...
- `DataInputStream` 和 `DataOutputStream`:用于读写基本数据类型。 - `BufferedInputStream` 和 `BufferedOutputStream`:提供缓冲功能以提高读写效率。 - `LineNumberInputStream`:提供行号信息。 - `...
DataOutputStream os = new DataOutputStream(process.getOutputStream()); os.writeBytes("pm install -r " + apkPath + "\n"); os.writeBytes("exit\n"); os.flush(); int exitCode = process.waitFor(); if...
- `parseInt(String s)`:字符串转整数。 - `toString(int i)`:整数转字符串。 **3.3 Math类** - **常用方法**: - `abs(double a)`:绝对值。 - `max(double a, double b)`:最大值。 - `min(double a, ...
OutputStream out = new DataOutputStream(conn.getOutputStream()); out.write(head); //文件正文部分 DataInputStream in = new DataInputStream(new FileInputStream(file)); int bytes = 0; byte[] ...