PrintWriter pw = new PrintWriter(new PrintStream("C:\\Users\\admin\\Desktop\\1.txt", "GBK")); pw.write("大数据abc123"); pw.close();
时间: 2023-06-28 14:06:25 浏览: 59
这段代码的作用是创建一个名为 "1.txt" 的文件,并且将字符串 "大数据abc123" 以 GBK 编码写入该文件中。
具体来说,这段代码首先创建了一个 PrintWriter 对象 pw,该对象利用 PrintStream 和 "C:\\Users\\admin\\Desktop\\1.txt" 参数创建了一个输出流,并指定输出流的字符编码为 GBK。接着,使用 pw 的 write() 方法将字符串 "大数据abc123" 写入输出流中。最后,调用 pw 的 close() 方法关闭输出流,完成文件写入操作。
相关问题
PrintWriter pw = new PrintWriter(new PrintStream("C:\Users\admin\Desktop\1.txt", "GBK")); pw.write("大数据abc123"); pw.close();这段代码为什么最终15个字节
这段代码最终只输出了15个字节是因为使用了GBK编码,其中"大"字占用了两个字节,"数"字占用了两个字节,"据"字占用了两个字节,"a"字母占用了一个字节,"b"字母占用了一个字节,"c"字母占用了一个字节,数字"1"占用了一个字节,数字"2"占用了一个字节,数字"3"占用了一个字节,因此总共占用了15个字节的空间。注意,这个例子中使用的PrintWriter会默认使用平台的默认字符集,如果你想要使用其他的字符集,可以在构造函数中指定。
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ipEditText = findViewById(R.id.ipEditText); portEditText = findViewById(R.id.portEditText); Button connectButton = findViewById(R.id.connectButton); connectButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String ip = ipEditText.getText().toString(); int port = Integer.parseInt(portEditText.getText().toString()); new ConnectTask().execute(ip, String.valueOf(port)); } }); Button sendMessageButton = findViewById(R.id.sendMessageButton); sendMessageButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showSendMessageDialog(); } }); }出现E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.rlswj, PID: 16184 android.os.NetworkOnMainThreadException at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1668) at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:116) at java.net.SocketOutputStream.write(SocketOutputStream.java:161) at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221) at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:291) at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:295) at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:141) at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:229) at java.io.BufferedWriter.flush(BufferedWriter.java:254) at java.io.PrintWriter.newLine(PrintWriter.java:482) at java.io.PrintWriter.println(PrintWriter.java:629) at java.io.PrintWriter.println(PrintWriter.java:670)
这个错误信息与你之前提到的错误信息相同,都是由于在主线程中进行了网络操作导致的。你需要将网络操作放到单独的线程或使用异步任务来执行,例如在 `ConnectTask` 中执行网络操作,而不是在主线程中执行。在 `ConnectTask` 的 `doInBackground` 方法中执行网络操作,然后在 `onPostExecute` 方法中更新 UI。
阅读全文