Java实例——对文件进行操作

Java实例

一、Java目录操作

1.1、递归创建目录

package shili.file;

import java.io.File;

public class mkdir {
    /*
    * @date 2021.07.21
    * 递归实现创建目录,路径,文件,文件夹
    * 总结
    *   创建过程非常慢
    * */
    public static void main(String[] args){
        String direction = "E:\\C盘\\Users\\16402\\IdeaProjects\\Pratice\\src\\tmp";
        File file = new File(direction);
        boolean result1 = file.isDirectory();
        boolean result = file.mkdirs();
        System.out.println("Operation Status = " + result);
        System.out.println("isExit Status ="+result1);
    }
}

运行结果

Operation Status = false
isExit Status =true

1.2、删除目录

package shili.file;

import java.io.File;

/*
* @date 2021.07.21
* */
public class rmdir {
    public static void main(String[] args) throws Exception{
        String str = "E:\\C盘\\Users\\16402\\IdeaProjects\\Pratice\\src\\tmp";
        System.out.println(deleteDir(new File(str)));
    }
    public static boolean deleteDir(File dir){
            if(dir.isDirectory()) {
                String[] children = dir.list();
                for (int i = 0; i < children.length; ++i) {
                    boolean success = deleteDir
                            (new File(dir, children[i]));
                    if (!success) {
                        return false;
                    }
                }
            }

            if(dir.delete()){
                System.out.println("目录已被删除!");
                return true;
            }else{
                System.out.println("目录删除失败");
                return false;
            }
        }
}

运行结果

目录已被删除!
true

1.3、判断目录是否为空

package shili.file;
import java.io.File;

public class isExitDir {
    public static void main(String[] args){
        String str = "E:\\C盘\\Users\\16402\\IdeaProjects\\Pratice\\src\\tmp";
        File file = new File(str);
        if(file.isDirectory()){
            if(file.list().length > 0){
                System.out.println("目录不为空");
            }else {
                System.out.println("目录为空");
            }
        }else {
            System.out.println("不是一个目录!");
        }
    }
}

运行结果:

目录为空

1.4、在指定目录中查找文件

package shili.file;

import java.io.File;
import java.io.IOException;

/*
* @date2021.07.21
* 目的
*   打印当前目录以及里面的文件名字
* @method
*   file[]
* */
public class printDirStru {
    public static void main(String[] args) throws IOException {
        String direction = "E:\\C盘\\Users\\16402\\IdeaProjects\\Pratice\\src\\tmp";
//        创建文件
        File file3 = new File(direction+"\\实验3.txt");
        showDir(1,new File(direction));
    }
    public static void showDir(int indent,File file) throws IOException{
        for(int i = 0; i < indent;++i){
            System.out.print('-');
        }
        System.out.println(file.getName());
        if(file.isDirectory()){
            File[] files = file.listFiles();
            for(int i = 0; i < files.length;++i){
                showDir(indent+4,files[i]);
            }
        }
    }

}

运行结果:

新建 Microsoft Word 文档.docx

1.5、打印当前目录结构

package shili.file;

import java.io.File;
import java.io.IOException;

/*
* @date2021.07.21
* 目的
*   打印当前目录以及里面的文件名字
* @method
*   file[]
* */
public class printDirStru {
    public static void main(String[] args) throws IOException {
        String direction = "E:\\C盘\\Users\\16402\\IdeaProjects\\Pratice\\src\\tmp";
//        创建文件
        File file3 = new File(direction+"\\实验3.txt");
        showDir(1,new File(direction));
    }
    public static void showDir(int indent,File file) throws IOException{
        for(int i = 0; i < indent;++i){
            System.out.print('-');
        }
        System.out.println(file.getName());
        if(file.isDirectory()){
            File[] files = file.listFiles();
            for(int i = 0; i < files.length;++i){
                showDir(indent+4,files[i]);
            }
        }
    }

}

运行结果:

-tmp
-----新建 Microsoft Word 文档.docx

二、Java文件操作

2.1、创建文件并读入

package shili.dir;
import java.io.*;
public class writeFile {
    static String path = "E:\\C盘\\Users\\16402\\IdeaProjects\\Pratice\\src\\file\\";
    static String fileTemp;
    public static void main(String[] args){
        try{
            File file = new File(path+"runoob.log");
            if(file.isFile()){
                System.out.println(file.getName()+"存在");
            }else{
                System.out.println("不存在+\n+正在创建");
                file.createNewFile();
                System.out.println(file.getName()+" "+file.isFile());
            }
            System.out.println("该写入为,将之前的内容读取保存的基础上写,而是抛弃之前的");
            BufferedWriter out = new BufferedWriter(new FileWriter(file));
            out.write("菜鸟教程\n");
            out.write("你好\n");
            out.close();
            System.out.println("读取文件里面的内容");
            BufferedReader in = new BufferedReader(new FileReader(file));
            String str;
            while((str = in.readLine()) != null){
                System.out.println(str);
            }
        }catch (Exception e){
            System.out.println(e);
        }
    }
}

运行结果:

runoob.log存在
菜鸟教程+
你好

个人总结:

Tip 2021.07.21

一般来说目录与文件都有用到file

然后file有很多操作都是关于目录和文件的

然后关于目录的就是:

​ 创建(有点像linux指令):mkdir()、isDirectory()、

关于文件的就是:

​ 创建:createNewFile()、

​ 是否存在:isFile()、

然后就是读取、写入文件需要流另一个文件操作

BufferedWriter、BufferedRead

俩个类

创建一个FileRead、或者FileWriter然后放入BufferedWriter、BufferedRead俩个流里。

三、Java日期操作

3.1、获取当前并格式化时间

package shili.date;

import java.text.SimpleDateFormat;
import java.util.Date;
/*
* @date 2021.07.21
* */
public class dateDemo {

    public static void main(String[] args){
        Date date = new Date();//获取当前时间
        String str = "yyyy-MM-dd hh:mm:ss";
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(str);
//        如果没有给他格式,他就会对应自己默认的格式
//        SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
        System.out.println("今天是"+simpleDateFormat.format(date));
    }
}

运行结果:

3.2、 获取年份、月份等

package shili.date;

import java.util.Calendar;

public class calendarDemo {
    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        int day = cal.get(Calendar.DATE);
        System.out.println("当前日期"+day);

        int Month = cal.get(Calendar.MONTH)+ 1;
        //日期要+1,它这里显示前一个月的
        System.out.println("当前月份"+Month);

        int year = cal.get(Calendar.YEAR);
        System.out.println("当前年份"+year);

        int dow = cal.get(Calendar.DAY_OF_WEEK);
        System.out.println("一周的第几天: " + dow);  // 星期日为一周的第一天输出为 1,星期一输出为 2,以此类推

        int dom = cal.get(Calendar.DAY_OF_MONTH);
        System.out.println("一月中的第几天: " + dom);

        int doy = cal.get(Calendar.DAY_OF_YEAR);
        System.out.println("一年的第几天: " + doy);
    }
}

运行结果

当前日期21
当前月份7
当前年份2021
一周的第几天: 4
一月中的第几天: 21
一年的第几天: 202

Process finished with exit code 0

3.3、时间戳转换成时间

package shili.date;import java.text.SimpleDateFormat;import java.util.Date;/** 通过时间戳获取时间并,格式化* */public class TimeMillisDemo {    public static void main(String[] args){        Long timeStamp = System.currentTimeMillis();  //获取当前时间戳        System.out.println("时间戳为:"+timeStamp);        String str = "yyyy-MM-dd hh:mm:ss";        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(str);        System.out.println(String.valueOf(timeStamp));        System.out.println(Long.parseLong(String.valueOf(timeStamp)));        Date date = new Date(Long.parseLong(String.valueOf(timeStamp)));        System.out.println(simpleDateFormat.format(date));        System.out.println(simpleDateFormat.format(new Date(timeStamp)));    }}

运行结果:

时间戳为:1626854960572
1626854960572
1626854960572
2021-07-21 04:09:20
2021-07-21 04:09:20

Process finished with exit code 0

(主要通过菜鸟编程,以及相关书籍)
待续未完…

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于您的问题,我会尽力回答。在Android中,JNI可以用来与C/C++代码进行交互,我们可以利用JNI来读写SD卡。下面是一个简单的例子: 1. 首先,在您的Java代码中定义native方法: ``` public class MainActivity extends Activity { static { System.loadLibrary("native-lib"); } public native String readFromSDCard(String filePath); public native boolean writeToSDCard(String filePath, String content); } ``` 2. 然后,在您的C/C++代码中实现这些方法: ``` #include <jni.h> #include <string.h> #include <stdio.h> #include <android/log.h> JNIEXPORT jstring JNICALL Java_com_example_myapplication_MainActivity_readFromSDCard(JNIEnv *env, jobject instance, jstring filePath) { const char *path = env->GetStringUTFChars(filePath, 0); FILE *file = fopen(path, "r"); if (file == NULL) { __android_log_print(ANDROID_LOG_ERROR, "JNI", "readFromSDCard: fopen failed"); return NULL; } fseek(file, 0, SEEK_END); long size = ftell(file); fseek(file, 0, SEEK_SET); char *buffer = new char[size + 1]; fread(buffer, 1, size, file); buffer[size] = '\0'; fclose(file); env->ReleaseStringUTFChars(filePath, path); return env->NewStringUTF(buffer); } JNIEXPORT jboolean JNICALL Java_com_example_myapplication_MainActivity_writeToSDCard(JNIEnv *env, jobject instance, jstring filePath, jstring content) { const char *path = env->GetStringUTFChars(filePath, 0); const char *str = env->GetStringUTFChars(content, 0); FILE *file = fopen(path, "w"); if (file == NULL) { __android_log_print(ANDROID_LOG_ERROR, "JNI", "writeToSDCard: fopen failed"); return false; } fwrite(str, 1, strlen(str), file); fclose(file); env->ReleaseStringUTFChars(filePath, path); env->ReleaseStringUTFChars(content, str); return true; } ``` 3. 最后,在您的AndroidManifest.xml文件中添加以下权限: ``` <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> ``` 这样,您就可以在Java代码中调用这些native方法来读写SD卡了。 至于Android NDK的使用实例——增量更新实战,这是一个比较复杂的话题,如果您有相关的需求,可以提出具体的问题,我会尽力为您解答。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值