Java文件输入输出

感觉需要记录一下

Posted by wqw on August 19, 2018

Java 文件读入

头文件

import java.io.File;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileWriter;

读入

			String pathname =".\\src\\test.in";
			File filename =new File(pathname);
			/* 另一种写法
			InputStreamReader reader =new InputStreamReader(new FileInputStream(filename));
			BufferedReader br= new BufferedReader(reader);
			String data="";
			data=br.readLine();
			while (data!=null)
			{
				data=br.readLine();
				System.out.println(data);
			}*/
			Scanner scan=new Scanner(filename);

输出

			File writename =new File(".\\src\\test.out");
			writename.createNewFile();
			BufferedWriter out = new BufferedWriter(new FileWriter(writename));

然后就可以调用out.write(“helloworld”);了

结束加入

out.flush();
out.close();

关于flush()

与在网络硬件中缓存一样,流还可以在软件中得到缓存,即直接在Java代码中缓存。这可以通过BufferedOutputStream或BufferedWriter 链接到底层流上来实现。因此,在写完数据时,flush就显得尤为重要。

关于try

try
{
}
catch(Exception e)
{
	e.printStackTrace();
}

文件检索

import java.io.*;
import java.util.*;
public class FileSearch
{
	public static void main(String [] args)
	{
		try {
		String path="J:/Blog/blog/Barcelona16.github.io/_posts/";
		Scanner scan=new Scanner(System.in);
		ArrayList<String>  files= new ArrayList<String>();
		File file=new File(path);
		File [] templist=file.listFiles();
		for (int i=0;i<templist.length;i++)
		{
			if(templist[i].isFile())
			{
				String data=templist[i].getName().toString();//42 9
				//data=data.substring(42);
				System.out.println(data);
				files.add(data);
			}
		}
		String input=scan.next();
		scan.close();
		Collections.sort(files);
		for(int i=0;i<files.size();i++)
		{
			if(files.get(i).toLowerCase().contains(input.toLowerCase()))
			{
				System.out.println(files.get(i));
			}
		}
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	
		
	}
}

链表加法

import java.util.*;
import java.io.*;
public class linkedlist 
{
	public static void main(String []args)
	{
		Scanner scan=new Scanner(System.in);
		String data1=scan.nextLine();
		String data2=scan.nextLine();
		scan.close();
		Scanner scan1=new Scanner(data1);
		Scanner  scan2=new Scanner(data2);
		scan1.useDelimiter(" ");
		scan2.useDelimiter(" ");
		LinkedList<Integer> num1=new LinkedList<>();
		LinkedList<Integer> num2=new LinkedList<>();
		LinkedList<Integer> ans=new LinkedList<>();
		while(scan1.hasNextInt())
		{
			//System.out.println(scan1.nextInt());
			num1.addFirst(scan1.nextInt());
		}
		while(scan2.hasNext())
		{
			num2.addFirst(scan2.nextInt());
		}
		scan1.close();
		scan2.close();
		//System.out.println(num1);
		//System.out.println(num2);
		add(num1,num2,ans);
		for(int i=0;i<ans.size();i++)
			System.out.print(ans.get(i)+" ");
			
		
	}
	private static void add(LinkedList<Integer> num1,LinkedList<Integer> num2,LinkedList<Integer> ans)
	{
		int maxlen=0;
		int minlen=0;
		if(num1.size()>=num2.size())
		{
			maxlen=num1.size();
			minlen=num2.size();
		}
		else
		{
			maxlen=num2.size();
			minlen=num1.size();
		}
		int carry=0;
		for(int i=0;i<minlen;i++)
		{
			ans.addFirst((num1.get(i)+num2.get(i)+carry)%10);
			carry=(num1.get(i)+num2.get(i)+carry)/10;
		}
		for(int i=minlen;i<maxlen;i++)
		{
			if(num1.size()==maxlen)
			{
				ans.addFirst((num1.get(i)+carry)%10);
				carry=((num1.get(i)+carry)/10);
			}
			else
			{
				ans.addFirst((num2.get(i)+carry)%10);
				carry=((num2.get(i)+carry)/10);
			}
		}
		
	}
}

ArrayList和LinkedList

前者遍历效率高,后者定点插入删除效率高 addFirst以及addLast tolowecase()大小写不敏感