Java学习之路(3)----Java基础

第十三章 Java 流(Stream)、文件(File)和IO

13.1 BufferedReader语法

(1)多字符输入

import java.io.*;
public class ioTest{
 
 public static void main(String[] args) throws IOException{
  
  //读入字符并一个个打印出来
 
  char ch;
  System.out.println("输入字符,按下q退出:");
  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  for(;;){
   
   ch = (char)br.read();
   System.out.println(ch);
   if(ch=='q')
    break;
  }
 

(2)字符串输入

public static void main(String[] args) throws IOException{
    //读入字符串
  String s;
  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  
  System.out.println("请输入,'q'退出:");
  
  do{
   
   s = br.readLine();
   System.out.println(s);
   
  }while(!"q".equals(s));
 }

13.2 读写文件

(1)可能造成乱码

import java.io.*;
public class fileTest{
 
 // public static void main(String[] args) throws IOException{
  
  // byte[] s ={11,22,33,44};
  // int i;
  
  // OutputStream f = new FileOutputStream("tt.txt");
  
  // for(i=0;i<s.length;i++){
   
   // f.write(s[i]);
   
  // }
  // f.close();
  
  // InputStream f2 = new FileInputStream("tt.txt");
  // int size = f2.available();
  // int j;
  // for(j=0;j<size;j++){
   
   // System.out.println((char)f2.read());
   
  // }
  // f2.close();
  
  
 // }
 
 public static void main(String[] args){
  
  try{
  byte[] s ={11,22,33,44};
  int i;
  
  OutputStream f = new FileOutputStream("tt.txt");
  
  for(i=0;i<s.length;i++){
   
   f.write(s[i]);
   
  }
  f.close();
  
  InputStream f2 = new FileInputStream("tt.txt");
  int size = f2.available();
  int j;
  for(j=0;j<size;j++){
   
   System.out.println((char)f2.read());
   
  }
  f2.close();
  }catch(IOException e){
   System.out.println("IOException");
  }
  
 }
}

(2)解决乱码


import java.io.*;
public class fileTest2{
 
 // public static void main(String[] args) throws IOException{
  
  // File f = new File("tt2.txt");
  // FileOutputStream out = new FileOutputStream(f);
  
  // OutputStreamWriter outWrite = new OutputStreamWriter(out,"UTF-8");
  // outWrite.append("中文");
  // outWrite.append("11223344");
  // outWrite.append("#_-! ?");
  // outWrite.append("china");
  
  // outWrite.close();
  // out.close();
  // System.out.println("成功");
  
  
 // }
 public static void main(String[] agrs) throws IOException{
  
  FileInputStream fip = new FileInputStream("tt2.txt");//创建输入流
  
  InputStreamReader in2 = new InputStreamReader(fip,"UTF-8");
  
  StringBuffer sb = new StringBuffer();
  
  while(in2.ready()){
   //System.out.println((char)in2.read());
   sb.append((char)in2.read());
   
   System.out.println(sb);
  }
  System.out.println(sb);
  in2.close();//关闭读取流
  fip.close();//关闭输入流
  
 }
}

13.3 Java中的目录

13.3.1 创建目录

 public static void main(String[] args){
  
  //wimdows系统记得要加.,很多教程是Linux,所以用/tmp
  String dir = "./tmp";
  String dir1 = "./tmp/java";
  File f1 = new File(dir1);
  File f = new File(dir);
  //f1.mkdirs();
  //System.out.println(f1.mkdir());//false
  //System.out.println(f1.mkdir());//true
  System.out.println(f1.mkdirs());
 }

13.3.2 读取目录

import java.io.File;
public class CreateDir{
 
 // public static void main(String[] args){
  // String s = "./1";//或者使用绝对路径
  // int i;
  // File f = new File(s);
  // //System.out.println(f.mkdir());
  // if(f.isDirectory()){
   // System.out.println(s+"目录");
   // String[] s2 = f.list();
   // for(i=0;i<s2.length;i++){
    
    // File f2 = new File(s+"/"+s2[i]);
    // if(f2.isDirectory()){
     
     // System.out.println(s+"/"+s2[i]+"目录");
     
    // }else{
     
     // System.out.println(s+"/"+s2[i]+"文件");
    // }
    
   // }
   
  // }else{
   // System.out.println(s+"不是目录");
  // }
  
  
 // }
 
 public static void main(String[] args){
  String s = "./1";
  File f = new File(s);
  if(f.isDirectory()){
    System.out.println(s+"目录");
    File[] fs = f.listFiles();
    for(File f1:fs){
    
    if(f1.isDirectory()){
     
     System.out.println(f1+"目录");
     
    }else{
     
     System.out.println(f1+"文件");
    }
    
   }
   
  }else{
   System.out.println(s+"不是目录");
  }
  
  
 }
 }

13.4 删除目录或文件

删除文件可以使用 java.io.File.delete() 方法。
以下代码会删除目录 /tmp/java/,需要注意的是当删除某一目录时,必须保证该目录下没有其他文件才能正确删除,否则将删除失败。

//只是变成空文件夹而已,为什么呢?
 public static void main(String[] args){
  
  String dir = "./1/2/";
  File f1 = new File(dir);
  
  DeleteFolder(f1);
  System.out.println("ok!");
 }
 
 public static void DeleteFolder(File folder){
  
  File[] fs = folder.listFiles();
  
  if(fs!=null){
   
   for(File f2:fs){
    
    if(f2.isDirectory()){
     DeleteFolder(f2);
    }else{
     f2.delete();
    }
   }
   
  }else{
   folder.delete();
  }
 }

解决:

else{
   folder.delete();
  }
 
 改为:
 folder.delete();//突然自己多加了else,这样跳出if后不会再进入else里

第十四章 循环

这里主要补充Java的一个循环,其他的循环与c语言结构相同,这里就不叙述。

  • Java5 引入了一种主要用于数组的增强型 for 循环。
    Java 增强 for 循环语法格式如下:
for(声明语句 : 表达式)
{
   //代码句子
}
  • 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。
  • 表达式:表达式是要访问的数组名,或者是返回值为数组的方法。
int[] as = {1,2,3,4};
for(int a1:as){
System.out.println(a1);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值