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

本文共 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

你可能感兴趣的文章
LeetCode 1002. Find Common Characters (查找常用字符)
查看>>
建立隐藏管理员用户
查看>>
android设置图文提醒功能
查看>>
ajax跨域提交
查看>>
完成登录与注册页面的前端
查看>>
Mac下source tree 下的安装
查看>>
Q学习原理及例子
查看>>
rpmbuild 源码打包clickhouse,附带打好的rpm包下载地址
查看>>
软件体系结构原理、方法与实践总结
查看>>
2017-2018-1 《程序设计与数据结构》第3周学习总结
查看>>
一些基础语法
查看>>
360多万条信息把一台服务器快拖卡了
查看>>
Git详解之六 Git工具
查看>>
等高布局display:table
查看>>
onunload与onbeforeunload事件解析 ...
查看>>
Openjudge-计算概论(A)-取石子游戏
查看>>
python-装饰器
查看>>
(4)获取servlet常用api
查看>>
sqlite about
查看>>
1753: 分配问题 二分最佳匹配/最小费用流与最大费用流
查看>>