博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java文件课后动手动脑
阅读量:5275 次
发布时间:2019-06-14

本文共 6968 字,大约阅读时间需要 23 分钟。

package 第九周作业1;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.RandomAccessFile;import java.nio.channels.FileChannel;import java.util.Scanner;public class Main {	public static void main(String[] args) {		// TODO 自动生成的方法存根		getFileSize01(new File("E:\\第九周\\src\\作业2\\dada1.txt"));        try {			getFileSize02(new File("E:\\第九周\\src\\作业2\\dada1.txt"));		} catch (IOException e) {			// TODO 自动生成的 catch 块			e.printStackTrace();		}        try {			getFileSize03(new File("E:\\第九周\\src\\作业2\\dada1.txt"));		} catch (IOException e) {			// TODO 自动生成的 catch 块			e.printStackTrace();		}	   }   	/* 获取文件大小的方法01:		 * 通过文件的length() 方法获取文件大小,这个通常可以应用于本地文件的大小计算		 */	private static long getFileSize01(File file) {		 		System.out.println(file.length());		return file.length();	}	@SuppressWarnings("unused")/*	 * 获取文件大小的方法02:	 * 通过FileChannel类来获取文件大小,这个方法通常结合输入流相关,	 * 因此可以用于文件网络传输时实时计算文件大小;*/	private static long getFileSize02(File file) throws IOException {		 		FileInputStream fis = new FileInputStream(file);		FileChannel fc = fis.getChannel();		System.out.println(fc.size());		return fc.size();	}	@SuppressWarnings("unused")	/*获取文件大小的方法03:		  * FileInputStream的available()方法看可以用于小文件的文件大小计算,		  * 因为available()的返回值类型为int型,可能会存在溢出的情况,		  * 所以 available()方法计算文件大小不建议使用;*/	private static int getFileSize03(File file) throws IOException {		 		FileInputStream fis = new FileInputStream(file);		System.out.println(fis.available());		return fis.available();	}}

  

第一个输出文件大小,三种方法学习了一下。引自https://blog.csdn.net/u014143369/article/details/53164791

文件夹大小操作(2018/11/20/22:30加):

import java.io.File;public class Wenjian {/** * 计算文件夹大小 * @param wenjian_Size *  */	public void wenjian_Size(File a)	{		long sum=0;			File[] files = a.listFiles();		for(int i=0;i

  

package DaDa_Wenjian;import java.io.File;import java.io.IOException;public class dada {	public static void main(String[] args) throws IOException {		// TODO 自动生成的方法存根	/*	File f1 = new File("E:\\Dada's function library\\src\\DaDa_Wenjian\\dada1.txt");           if(!f1.exists()) {               f1.createNewFile();//如果没有创建一个           }           File f2 = new File("E:\\Dada's function library\\src\\DaDa_Wenjian\\dada2.txt");           if(!f2.exists()) {               f2.createNewFile();//如果没有创建一个           }           F1_F2_copy a= new F1_F2_copy();        a.F1_F2(f1, f2);        */		File f1 = new File("E:\\Dada's function library\\src\\DaDa_Wenjian");   				Wenjian a= new Wenjian();		a.wenjian_Size(f1);	}}

  

 

 

第二个实验:加密文件内容

package 第九周作业1;import java.io.File;import java.io.InputStream;import java.io.OutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;//编写一个文件加解密程序,通过命令行完成加解密工作public class Main1 { private static final int numOfEncAndDec=0x99;//加密解密密钥 private static int dataOfFile=0;//文件字节内容 public static void main(String[] args) {  File srcFile=new File("E:\\第九周\\src\\第九周作业1\\dada1.txt");//初始化文件  File encFile=new File("E:\\第九周\\src\\第九周作业1\\dada2.txt"); //加密文件  File decFile=new File("E:\\第九周\\src\\第九周作业1\\dada3.txt");  //解密文件    try {   //EncFile(srcFile,encFile);  //加密操作   //DecFile(encFile,decFile);//解密操作          EncFile(srcFile,decFile);  //加密操作       DecFile(decFile,encFile);  }catch(Exception e) {   e.printStackTrace();  } } private static void EncFile(File srcFile,File encFile)throws Exception{  if(!srcFile.exists()) {   System.out.println("source file not exixt");   }  if(!encFile.exists()) {   System.out.println("encrypt file created");   encFile.createNewFile();//若无加密文件,新建一个加密文件  }  InputStream fis=new FileInputStream(srcFile);  OutputStream fos=new FileOutputStream(encFile);    while((dataOfFile=fis.read())>-1) {//当读到文件内容时   fos.write(dataOfFile^numOfEncAndDec);//将读出的内容加密后写入  }  fis.close();  fos.flush();  fos.close(); } private static void DecFile(File encFile,File decFile)throws Exception{  if(!encFile.exists()) {   System.out.println("encrypt file not exixt");  }  if(!decFile.exists()) {   System.out.println("decrypt file created");   decFile.createNewFile();  }  InputStream fis=new FileInputStream(encFile);  OutputStream fos=new FileOutputStream(decFile);    while((dataOfFile=fis.read())>-1) {   fos.write(dataOfFile^numOfEncAndDec);  }  fis.close();  fos.flush();  fos.close(); }}

 来源于网络,但是我有另一种方法就是数据与^的操作:

import java.io.FileReader;import java.io.FileWriter;import java.io.PrintWriter;import java.util.Scanner;public class Main2 {	public static void main(String[] args) {			F1_F2(new File("E:\\第九周\\src\\第九周作业1\\1.txt"), new File("E:\\第九周\\src\\第九周作业1\\2.txt"));	}	public static void F1_F2(File f1,File f2)	{		try		{					//写入f2			FileWriter fw=new FileWriter(f2,false);			PrintWriter pw=new PrintWriter(fw);			//阅读f1			Scanner shuru = new Scanner(new BufferedReader(new FileReader(f1)));			  		while(shuru.hasNext())		{			int i = Integer.valueOf(shuru.next()).intValue();						pw.println((char)(i^20000));//插入行号					}						pw.flush();			pw.close();			fw.close();								}		catch(Exception e)		{			System.out.println("错误");		}	}}

  

把数字变成文字

第三个实验:

感觉超出我的想象,理解不了,但是还是源码奉上

三、编写一个文件分割工具,能把一个大文件分割成多个小的文件package 文件分割工具;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException; public class CutFile {     public static void main(String[] args) {         //调用cutFile()函数 传人参数分别为 (原大文件,切割后存放的小文件的路径,切割规定的内存大小)         cutFile("F:\\测试加密.txt", "F:",10 * 10 * 20);     }     private static void cutFile(String src, String endsrc, int num) {         FileInputStream fis = null;         File file = null;         try {             fis = new FileInputStream(src);             file = new File(src);             //创建规定大小的byte数组             byte[] b = new byte[num];             int len = 0;             //name为以后的小文件命名做准备             int name = 1;             //遍历将大文件读入byte数组中,当byte数组读满后写入对应的小文件中             while ((len = fis.read(b)) != -1) {                 //分别找到原大文件的文件名和文件类型,为下面的小文件命名做准备                String name2 = file.getName();                 int lastIndexOf = name2.lastIndexOf(".");                 String substring = name2.substring(0, lastIndexOf);                 String substring2 = name2.substring(lastIndexOf, name2.length());                 FileOutputStream fos = new FileOutputStream(endsrc + "\\\\"+ substring + "-" + name + substring2);                 //将byte数组写入对应的小文件中                 fos.write(b, 0, len);                 //结束资源                 fos.close();                 name++;             }             } catch (FileNotFoundException e) {             e.printStackTrace();         } catch (IOException e) {             e.printStackTrace();         } finally {             try {                 if (fis != null) {                     //结束资源                     fis.close();                 }             } catch (IOException e) {                 e.printStackTrace();             }         }     } }

 虽然没有看懂,但是我会尽快理解byte的,来理解这个操作。

感觉文件操作不明白byte

 

转载于:https://www.cnblogs.com/gonT-iL-evoL-I/p/9985877.html

你可能感兴趣的文章
linux的管道 |和grep命令以及一些其他命令(diff,echo,cat,date,time,wc,which,whereis,gzip,zcat,unzip,sort)...
查看>>
Nginx和PHP-FPM的启动、重启、停止脚本分享
查看>>
cookie 和session 的区别详解
查看>>
Vuex-状态管理模式
查看>>
浮点数运算的精度问题:以js语言为例
查看>>
数据挖掘领域十大经典算法
查看>>
【C语言】09-字符串
查看>>
数据库连接及线程池
查看>>
解决android应用程序适用新老android系统版本方法
查看>>
Oracle SQL语句执行过程
查看>>
Oracle 中的SID是什么意思?有什么作用?
查看>>
关于http协议
查看>>
jquery validation remote进行唯一性验证时只使用自定义参数,不使用默认参数
查看>>
软件工程个人项目——买书的最低价格
查看>>
5-21
查看>>
springboot 集成 swagger 自动生成API文档
查看>>
Oracle 分类统计sql
查看>>
HDU-2476 String painter 区间DP
查看>>
任务管理器taskmgr查看几核
查看>>
去除右下角淘宝网弹窗恶意广告!
查看>>