最近工作需要,开始学java!
关于java字节流和字符流的分类 只要记住:
1 :有编码格式的是字符流
2:网络传输的是字节流
2:加读写缓存不仅可以读写一行,还能够减少读取时间!
import java.io.*;
import com.sun.imageio.plugins.common.ReaderUtil;
import net.sf.json.JSON;
import net.sf.json.JSONObject;
public class My_io {
public static void main(String[] args) throws IOException {
// 三个测试方法
//test01();
// test02();
// test03();
test07();
}
public static void test01() throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入一个字符");
char c;
c = (char) bufferedReader.read();
System.out.println("你输入的字符为"+c);
}
public static void test02() throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入一个字符,按 q 键结束");
char c;
do {
c = (char) bufferedReader.read();
System.out.println("你输入的字符为"+c);
} while (c != 'q');
}
public static void test03() throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入一行字符");
String str = bufferedReader.readLine();
System.out.println("你输入的字符为" + str);
}
// 二进制文件的读写
public static void test04() throws IOException {
byte[] bytes = {1,2,3,4,5};
FileOutputStream Out = new FileOutputStream(new File("").getAbsolutePath()+"test.txt");
Out.write(bytes);
Out.close();
FileInputStream filein = new FileInputStream(new File("").getAbsolutePath()+"test.txt");
int C;
while((C = filein.read()) != -1) {
System.out.print(C);
}
}
//文本文件的读写
public static void test05() throws IOException {
FileWriter file_write = new FileWriter(new File("").getAbsolutePath() + "test1.txt");
// 加 false,表示关闭追加
FileWriter file_write1 = new FileWriter(new File("").getAbsolutePath() + "test1.txt",false);
file_write.write("Hello,world! \n 欢迎来到java 的世界\n ");
file_write.write("不会覆盖文本文件的内容\n");
file_write.append("并不是追歼一行的内容,不要被方法名迷惑\n");
file_write.append(null);
file_write.flush();
System.out.println("文件的默认编码为" + file_write.getEncoding());
file_write.close();
FileReader file_read = new FileReader(new File("").getAbsolutePath() + "test1.txt");
BufferedReader buffer_read = new BufferedReader(file_read);//这里使用读缓存,一次能够读一行
String str;
while ((str = buffer_read.readLine()) !=null){
System.out.println(str);
}
file_read.close();
buffer_read.close();
//这里一次只读取一个字符。
FileReader File_read = new FileReader(new File("").getAbsolutePath() + "test1.txt");
int c;
while ((c = File_read.read()) != -1){
System.out.print( (char) c );
//System.out.print( c );
}
File_read.close();
}
//使用字节流来处理,可指定文件的编码
public static void test06() throws IOException {
FileOutputStream fileOut_stream = new FileOutputStream(new File("").getAbsolutePath() + "test2.txt");
OutputStreamWriter out_writer = new OutputStreamWriter(fileOut_stream , "GBK");
out_writer.write("hello! 欢迎来到 java的世界\n");
out_writer.append("另外一行内容");
out_writer.flush();
System.out.println("文件编码:" + out_writer.getEncoding());
out_writer.close();
fileOut_stream.close();
}
//读json文件,返回字符串
public static String readJsonFile(String fileName) {
String jsonStr = "";
try {
File jsonFile = new File(fileName);
FileReader fileReader = new FileReader(jsonFile);
// 按照字符流,指定编码格式读取
Reader reader = new InputStreamReader(new FileInputStream(jsonFile),"utf-8");
int ch = 0;
StringBuffer sb = new StringBuffer();
while ((ch = reader.read()) != -1) {
sb.append((char) ch);
}
fileReader.close();
reader.close();
jsonStr = sb.toString();
return jsonStr;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
//读取json
public static void test07() throws IOException {
JSONObject girls = new JSONObject();
//
girls.put("name", "xiaoming");
girls.put("age", 18);
girls.put("hobboit", new String[]{ "读书", "看电影"});
System.out.println(girls.toString());
BufferedWriter BW = new BufferedWriter(new FileWriter("newtest.json"));
String ws = girls.toString();
BW.write(ws);
BW.flush();
BW.close();
//
String path = My_io.class.getClassLoader().getResource("jsontest.json").getPath();
String input = readJsonFile(path);
JSONObject jobj = JSONObject.fromObject(input);
System.out.println("request:" + jobj.get("request"));
}
}