最近打游戏非常卡 但是我又很少闲的没事去看自己电脑的各个盘占用情况 今天忘了干了什么顺便瞄了一眼我的盘
(最开始只剩下了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("完成复制粘贴");
}
}