public class Circle{
public static void main(String[] args) {
circle(5); // 输出半径为5的圆
}
public static void circle(int r) {
for (int y = 0; y <= 2 * r; y += 2) {//0,2,4,6,8,10
int x = (int) Math.round(r - Math.sqrt(2 * r * y - y * y));//5,1,0,0,1,5, round是四舍五入
int len = 2 * (r - x);//0,8,10,10,8,0
// 圆左的空白
for (int i = 0; i <= x; i++) {
System.out.print(' ');
}
// 左半圆。
System.out.print('*');
// 中间空白
for (int j = 0; j <= len; j++){
System.out.print(' ');
}
// 右半圆
System.out.println('*');
}
}
}
输出:
* *
* *
* *
* *
* *
* *
7Java 文件操作
7.1Java 实例 - 文件写入
Io,BufferedWriter
以下实例演示了使用 write() 方法向文件写入内容:
实例
import java.io.*;
/**
* @author Wcl,alt+shift+j
*
*/
public class Main {//7.1
public static void main(String[] args) {
try {
BufferedWriter out = new BufferedWriter(new FileWriter("runoob.txt"));
out.write("菜鸟教程");
out.close();
System.out.println("文件创建成功!");
} catch (IOException e) {
}
}
}
文件创建成功!
创建成功后当前目录下就会生成一个名为 runoob.txt 的文件并将 “菜鸟教程” 字符串写入该文件。
7.2Java 实例 - 读取文件内容
Io,BufferedReader
以下实例演示了使用 readLine() 方法来读取文件 test.log 内容,其中 test.log 文件内容为:
菜鸟教程
www.runoob.com
java 代码如下:
Main.java 文件
import java.io.*;
public class Main {
public static void main(String[] args) {
try {
BufferedReader in = new BufferedReader(new FileReader("runoob.txt"));//("test.log"));
String str;
while ((str = in.readLine()) != null) {
System.out.println(str);
}
System.out.println(str);
} catch (IOException e) {
}
}
}
输出:
菜鸟教程
null
其他
ready()
以下代码是在学习读取文件与写入文件一起写的,读取文件时 String 换成 Stringbuffer 提高代码运行速度,ready() 方法判断文件是否准备好被读取,如果为 null,则停止。同时可以确保 Stringbuffer 不会报空指针异常。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class FileGet {//7.2
public static void main(String[] args) {
try {
BufferedWriter out = new BufferedWriter(new FileWriter("runoob.txt"));
out.write("菜鸟教程");//0行
out.append("dasd");
out.newLine();
out.write("你好");//1行
out.flush();//刷新所有缓冲消息。
out.close();
System.out.println("文件创建成功!");
BufferedReader in = new BufferedReader(new FileReader("runoob.txt"));
StringBuffer sb;
while (in.ready()){
// Method in class java.io. BufferedReader ready()
//告诉这个流是否准备好被读取。
sb = (new StringBuffer(in.readLine()));
System.out.println(sb);
}
in.close();
} catch (IOException e) {
}
}
}
输出:
文件创建成功!
菜鸟教程dasd
你好
7.3Java 实例 - 删除文件
delete()
以下实例演示了使用 delete() 方法将文件删除:
Main.java 文件
import java.io.*;
public class Main
{
public static void main(String[] args)
{
try{
File file = new File("c:\\test.txt");//创建File类的一个实例化对象,装箱(装机)
if(file.delete()){//判断删除操作是否成功,使用机子的操作
System.out.println(file.getName() + " 文件已被删除!");
}else{
System.out.println("文件删除失败!");
}
}catch(Exception e){
e.printStackTrace();
}
}
}
输出:
文件删除失败!
以上代码运行输出结果为(需要在 C 盘上先创建 test.txt 文件):
test.txt 文件已被删除!
7.4Java 实例 - 将文件内容复制到另一个文件
输入流,输出流,read,write,fileReader
以下实例演示了使用 BufferedWriter 类的 read 和 write 方法将文件内容复制到另一个文件:
Main.java 文件
import java.io.*;
public class Main {//7.4
public static void main(String[] args) throws Exception {
BufferedWriter out1 = new BufferedWriter(new FileWriter("srcfile"));//实例化
out1.write("string to be copied\n");//类方法
out1.close();//类方法
InputStream in = new FileInputStream(new File("srcfile"));//输入流
OutputStream out = new FileOutputStream
(new File("destnfile"));//输出流
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {//Method in class java.io. FilterReader 读一个字符 ,//Method in class java.io. InputStream
//从输入流读取数据的下一个字节。
out.write(buf, 0, len);
/**
* public void write(char[] cbuf,
int off,
int len)
throws IOException写入字符数组的一部分。
通常,此方法将给定数组中的字符存储到此流的缓冲区中,根据需要将缓冲区刷新到底层流。 然而,如果请求的长度至少与缓冲区一样大,
那么这个方法将刷新缓冲区,并将字符直接写入底层流。 因此冗余BufferedWriter将不会不必要地复制数据。 左闭右开
*/
}
in.close();
out.close();
BufferedReader in1 = new BufferedReader(new FileReader("destnfile"));
String str;
while ((str = in1.readLine()) != null) {//从输入流读取下一行文本。
System.out.println(str);
}
in1.close();
}
}
以上代码运行输出结果为:
string to be copied
7.5Java 实例 - 向文件中追加数据
filewriter 方法参数
以下实例演示了使用 filewriter 方法向文件中追加数据:
Main.java 文件
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
try {
BufferedWriter out = new BufferedWriter(new FileWriter("filename"));//每次写入都需要new BufferWriter并且需要new FileWriter
out.write("aString1\n");
out.close();
out = new BufferedWriter(new FileWriter("filename",true));//每次写入都需要new BufferWriter并且需要new FileWriter
out.write("aString2");
out.close();
BufferedReader in = new BufferedReader(new FileReader("filename"));
String str;
while ((str = in.readLine()) != null) {
System.out.println(str);
}
in.close();
}
catch (IOException e) {
System.out.println("exception occoured"+ e);
}
}
}
以上代码运行输出结果为:
aString1
aString2
import java.io.*;
public class Main1 {
/**
* 文件追加数据
* 原理就是将原文件数据先写进缓冲区,再在缓冲区追加数据最后保存
* 也可以重新创建个备份文件记录原文件,再记录进缓冲区
* 这里用第二种
* 要用第一种,就只需要用一个字符串变量来记录备份,但是万一突然断电,缓冲区所有记录消失,还是更安全点好
* @param args C:\Users\xyt\Desktop
* @throws Exception
*/
static void file_add(String str) throws Exception {
//首先创建一个备份文件,并读取原文件写入备份数据
File c = new File("C:/Users/xyt/Desktop/c.txt");
BufferedWriter c_w = new BufferedWriter(new FileWriter("C:/Users/xyt/Desktop/c.txt"));
BufferedReader a_r = new BufferedReader(new FileReader("C:/Users/xyt/Desktop/a.txt"));//先手动创建一个a.txt,否则会报错
String a_copy;
while((a_copy=a_r.readLine())!=null) {
c_w.write(a_copy);
c_w.write("\n");
}
c_w.close();
//再用备份文件先写入原文件缓冲区
BufferedReader c_r = new BufferedReader(new FileReader("C:/Users/xyt/Desktop/c.txt"));
String c_str;
BufferedWriter a_w = new BufferedWriter(new FileWriter("C:/Users/xyt/Desktop/a.txt"));
while((c_str=c_r.readLine())!=null) {
a_w.write(c_str);
a_w.write("\n");
}
//先不要写入,再把需要追加的参数数据写入缓冲区
a_w .write(str);//写入缓冲区
//然后写入
a_w.close();//写入txt
//最后删除备份文件(也可以保留),删除需要中止该文件的所有数据流,最好所有的都结束
a_r.close();
a_w.close();
c_r.close();
c_w.close();
c.delete();
}
public static void main(String[] args) throws Exception{
file_add("ababababababab");//运行几次便复制几次内容到a.txt里面,追加
}
}