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()大小写不敏感