【Bug】下载steam游戏的E盘莫名其妙爆满

博主发现游戏《战神》和《Apex》占用空间并不大,但卸载Wallpaper后释放了大量140GB内存,揭示了Wallpaper隐藏的内存占用问题。通过实例分享了操作系统实验中的文件操作失误导致的内存占用问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近打游戏非常卡 但是我又很少闲的没事去看自己电脑的各个盘占用情况 今天忘了干了什么顺便瞄了一眼我的盘

(最开始只剩下了1.9G 我把《the forest》删掉了)

我的表情是这样的

毕竟我是个兢兢业业按照硬盘空间下载游戏的人 必不可能使劲儿下载压榨我的E盘到一点空间都没有

所以就开始查自己的E盘是不是其他软件搞的鬼 用geek看了一圈 都很正常 也没有任何的问题

然后就开始着手删游戏


简单的加减法计算:

战神64.24G 

 apex82.82G

那么问题来了 加在一起也才147.06G 而剩下的这些游戏根本不占用什么

然后我就干脆卸载了wallpaper 因为之前wallpaper也出过一次问题 具体可以参考我之前的wallpaper丢失数据(算了 也别参考了 不用wallpaper了())

卸载后再看 一切都正常起来了

 所以我的wallpaper愣是占用了140G左右的内存

wallpaper!你这个坏蛋!


主要原因还是这几天和几个朋友绑了家庭共享,真是令人悲伤呢()

参考steam社区的指南


讲个之前做操作系统实验的故事

在运行【复制文件/目录】的时候因为我没有设置输出语句,简单的运行后就选择了测试【指令关键字检索文件】,测试发现我的复制文件/目录一直进行了下去。

运行一时爽 回收泪两行

顺便贴上当时写这个的代码,是操作系统的文件操作实验哦()

package File;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;

//文件操作
//掌握操作系统关于文件管理的各种原理,熟悉常用的文件/文件夹操作

public class TestFile {
public static void main(String[] args) throws IOException {
	System.out.println("输入相应的指令对文件进行操作:");
	System.out.println(" **** 1.指令关键字检索文件 ****");
	System.out.println(" **** 2.指令后缀名检索文件 ****");
	System.out.println(" **** 3.复制粘贴文件/目录 ****");
	System.out.println(" **** 4.退出 ****");
	System.out.println(" ");
	//System.out.println("**1.指令关键字检索文件**2.指令后缀名检索文件**3.复制文件/目录**4.退出**");
	Scanner in=new Scanner(System.in);
	int n=0;
	String s1,s2,s3;
	while(true) {
		System.out.print("请输入指令:");
		try {
		n=in.nextInt();
		}catch(Exception e) {
			System.out.println("输入格式有误");
			continue;
		}
	switch (n){
	case 1:
		System.out.print("请输入要检索的目录位置:");
		s1=in.next();
		System.out.print("请输入搜索关键字:");
		s2=in.next();
		Manage.findkeyword(s1,s2);
		break;
	case 2:
		System.out.print("请输入要检索的目录位置:");
		s1=in.next();
		System.out.print("请输入搜索后缀:");
		s3=in.next();
		String[] spilttail=s3.split(",");
		Manage.findtail(s1,spilttail);
		break;
	case 3:
		System.out.print("请输入源目录:");
		s1=in.next();
		System.out.print("请输入目标目录:");
		s2=in.next();
		Manage.filecopy(s1,s2);
		break;
	case 4:
		
		System.out.println("退出");
		System.exit(0);
		
		break;
	default:
		System.out.println("输入指令有误,重新输入");
		break;
	}
	}
}
}
class Manage{
	//指令关键字检索文件
	public static void findkeyword(String pathName,String forname) throws IOException {
		File dirFile=new File(pathName);
		if(!dirFile.exists()) {//如果文件不存在
			System.out.println("文件不存在!");
			return;
			}
		if(!dirFile.isDirectory()) {//isDirectory方法,检测对象是否是文件夹,返回值是boolean类型的。如果是则返回true,否则返回false。
			if(dirFile.isFile()) {//isFile()方法,检查表示此抽象路径名的文件是否是一个正常的文件
				//当且仅当表示此抽象路径名的文件是一个文件时该方法返回true.
				String str=dirFile.getName();//获取输入文件的名称
				if(str.indexOf(forname)!=-1);//indexOf方法,返回指定的字符在某个字符串中首次出现的位置,如果没有找到就返回-1
				//这里是找到了该文件.
				System.out.println(dirFile.getCanonicalFile());
				//getCanonicalFile()方法 返回给定File对象的规范文件
			}
			return;
		}
		if(dirFile.getName().indexOf(forname)!=-1) {//如果想要寻找的文件在寻找的文件目录中
			
			System.out.println(dirFile.getCanonicalPath());
			//getCanonicalPath() 返回文件的绝对路径,但是去除[..]这样的符号,即返回的是标准的绝地路径。
		}
		String[] filelist=dirFile.list();
		for(int i=0;i<filelist.length;i++) {
			String string=filelist[i];
			File file=new File(dirFile.getPath(),string);
			String name=file.getName();
			if(file.isDirectory()) {
				findkeyword(file.getAbsolutePath(),forname);
				//getAbsolutePath()方法 返回文件的绝对路径
				//
			}
			else {
				if(name.indexOf(forname)!=-1)
				System.out.println(file.getCanonicalFile());//此函数返回File对象,即给定File对象的规范文件。
			}
		}
	}


	//指令后缀名检索文件
	public static void findtail(String pathName,String[] forname) throws IOException {
		File dirFile=new File(pathName);
		if(!dirFile.exists()) {//如果文件不存在
			System.out.println("文件不存在!");
			return;
			}
		if(!dirFile.isDirectory()) {//isDirectory方法,检测对象是否是文件夹
			if(dirFile.isFile()) {//isFile()方法,检查表示此抽象路径名的文件是否是一个正常的文件
				//当且仅当表示此抽象路径名的文件是一个文件时该方法返回true.
				String str=dirFile.getName();
				String tail=str.substring(str.lastIndexOf(".")+1);//获取后缀
				for(int i=0;i<forname.length;i++) {
					if(tail.equals(forname[i]))
				    System.out.println(dirFile.getCanonicalFile());//此函数返回File对象,即给定File对象的规范文件。
				}
			}
			return;
		}
		String[] filelist=dirFile.list();
		for(int i=0;i<filelist.length;i++) {
			String string=filelist[i];
			File file=new File(dirFile.getPath(),string);//返回:此抽象路径名的字符串形式
			String name=file.getName();
			if(file.isDirectory()) {//isDirectory方法,检测对象是否是文件夹
				findtail(file.getAbsolutePath(),forname);//重新进行
			}
			else {
				String tail=name.substring(name.lastIndexOf(".")+1);
				for(int j=0;j<forname.length;j++) {
					if(tail.equals(forname[j]))
				    System.out.println(file.getCanonicalFile());//返回文件的绝对路径
				}
			}
		}
	}

	//复制粘贴文件 Orpath源目录 Topath目标目录
	public static void filecopy(String Orpath,String Topath) throws IOException {
		File source=new File(Orpath);
		if(!source.exists()) {//如果想要复制的资源不存在
			System.out.println("不存在"+Orpath+"该目录或文件");//资源不在源目录
			return;
		}
		File des=new File(Topath);
		File[] file=source.listFiles();
		
		if(!des.exists())//判断目标目录是否存在
		{
			des.mkdir();
			//这里使用了mkdir方法,在已经存在的文件夹下建立新的文件夹,不能在不存在的文件夹下建立新的文件夹。
			//同理还有一种mkdirs方法,如果父文件夹不存在并且最后一级子文件夹不存在,它就自动新建所有路经里写的文件夹;如果父文件夹存在,它就直接在已经存在的父文件夹下新建子文件夹。
		}
		
		FileInputStream input = null;
		FileOutputStream output = null;
		for(int i=0;i<file.length;i++)
		{
			try {
				if(file[i].isFile()) {
					input=new FileInputStream(file[i]);
					output=new FileOutputStream(new File(Topath+"/"+file[i].getName()));
					byte[] b=new byte[1024];
					int len;
					while((len=input.read(b))!=-1) {
						output.write(b,0,len);
					}
				input.close();//关闭文件
				output.flush();//刷新缓冲区
				//只有OutputStream才有flush()方法,而InputStream没有该方法
				output.close();//关闭输出流
				}
				else if(file[i].isDirectory()) {
					filecopy(Orpath+"/"+file[i].getName(), Topath+"/"+file[i].getName());
				}
			}catch(FileNotFoundException e) {
				e.printStackTrace();
			}
		}
		if(output!=null)
			output.close();
		System.out.println("完成复制粘贴");
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值